JSFiddle - React, Tailwind, and code Playground
by dhizzybusy
HTML
<button id="bRandom">
Create Randomized String List
</button>
<button id="bIns">
Insertion Sort
</button>
<button id="bQuick">
Quick Sort
</button><hr/>
<button id="bnString">
Insert new string
</button>
<input type="text" id="newString" placeholder="Enter String">
<hr>
<textarea id="listArea" cols = "50" rows="20"></textarea>
JavaScript
bQuick = document.getElementById("bQuick");
bIns = document.getElementById("bIns");
bRand = document.getElementById("bRandom");
bnString = document.getElementById("bnString");
newString = document.getElementById("newString");
//adding event listeners
bRand.addEventListener("click", createList);
bQuick.addEventListener("click", sortQuick);
bIns.addEventListener("click", sortIns);
bnString.addEventListener("click", insertNew);
//list storage
var list = [];
function createList(){
list = [];
//populating list
for(i=0;i<20;i++){
var str = Math.random().toString(36).substring(10);
list.push(str);
}
updateVisual();
}
function updateVisual(){
//update text area
var data="";
for(i=0;i<list.length;i++){
data += list[i] + "\n";
}
document.getElementById("listArea").value = data;
}
function sortQuick(){
Quick.sort(list);
updateVisual();
}
function sortIns(){
insertionSort(list);
updateVisual();
}
function insertNew(){
list.push(newString.value);
sortQuick();
}
function insertionSort(array)
{
for(var i = 1; i < array.length; ++i)
{
var item = array[i];
for(var j = i - 1; j >= 0; --j)
{
if(array[j] <= item) break;
array[j + 1] = array[j];
}
array[j + 1] = item;
}
return array;
}
var Quick= (function() {
function swap(array, indexA, indexB) {
var temp = array[indexA];
array[indexA] = array[indexB];
array[indexB] = temp;
}
function partition(array, pivot, left, right) {
var storeIndex = left,
pivotValue = array[pivot];
swap(array, pivot, right);
for(var v = left; v < right; v++) {
if(array[v] < pivotValue) {
swap(array, v, storeIndex);
storeIndex++;
}
}
swap(array, right, storeIndex);
return storeIndex;
}
function sort(array, left, right) {
var pivot = null;
if(typeof left !== 'number') {
left = 0;
}
if(typeof right !== 'number') {
...