Sorting Algorithms

by grettynebraska

HTML

<div id="inputDiv" class="left">
Input:<br/>
<textarea id="inputArea"></textarea>
</div>
<div id="buttonDiv" class="left">
<input type="button" id="runButton" value="Run Program">
</div>
<div id="outputDiv" class="left">
Output:<br/>
<textarea id="outputArea"></textarea>
</div>

CSS

.left{
  float: left;
}
.right{
  float: right;
}
.clear{
  clear: both;
}
.hidden{
  display: none;
}
.hint{
  font-size: 75%;
  font-style: italic;
}
#inputDiv, #outputDiv{
  width: 40%;
  padding: 10px;
}
#buttonDiv{
  width: 10%;
  text-align: center;
  padding-top: 30px;
}
#runButton{
  padding: 5px;
}
#inputArea, #outputArea{
  width: 100%;
  height: 200px;
}

/* The switch - the box around the slider */
.switch {
  position: relative;
  display: inline-block;
  width: 40px;
  height: 15px;
}

/* Hide default HTML checkbox */
.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

/* The slider */
.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  -webkit-transition: .4s;
  transition: .4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 11px;
  width: 11px;
  left: 2px;
  bottom: 2px;
  background-color: white;
  -webkit-transition: .4s;
  transition: .4s;
}

input:checked + .slider {
  background-color: #099;
}

input:focus + .slider {
  box-shadow: 0 0 1px #099;
}

input:checked + .slider:before {
  -webkit-transform: translateX(26px);
  -ms-transform: translateX(26px);
  transform: translateX(26px);
}

/* Rounded sliders */
.slider.round {
  border-radius: 34px;
}

.slider.round:before {
  border-radius: 50%;
}

JavaScript

//The name of this function should not be changed
function main(){
	var list = randomList(readNumber());
  var isorted = insertionSort(list);
  var ssorted = selectionSort(list);
  var bsorted = bubbleSort(list);
  var qsorted = quickSort(list);
  var msorted = mergeSort(list);
	print("Original:\n" + list);
  print("Insertion:\n" + isorted);
  print("Selection:\n" + ssorted);
  print("Bubble:\n" + bsorted);
  print("Quick:\n" + qsorted);
  print("Merge:\n" + msorted);
      
}

function randomList(length){
	var output = [];
  for(var i=0;i<length;i++){
  	var num = Math.floor(Math.random()*100);
    output.push(num);
  }
  return output;
}

function insertionSort(list){
	var output = list.slice(0);
	for(var i=1;i<output.length;i++){
  	for(var k=i;k>0 && output[k] < output[k-1];k--){
    	var temp = output[k];
      output[k] = output[k-1];
      output[k-1] = temp;
    }
  }
  return output;
}

function selectionSort(list){
	var output = list.slice(0);
  for(var i=0;i<output.length;i++){
  	var k = i;
    for(var j=i+1;j<output.length;j++){
    	if(output[j] < output[k]){
      	k = j;
      }
    }
    var temp = output[i];
    output[i] = output[k];
    output[k] = temp;
  }
  return output;
}

function bubbleSort(list){
	var output = list.slice(0);
  for(var i=0;i<output.length;i++){
  	var swapped = false;
    // for j = n:i+1
    for(var j=output.length-1;j>i;j--){
    	if(output[j] < output[j-1]){
      	var temp = output[j];
        output[j] = output[j-1];
        output[j-1] = temp;
        swapped = true;
      }
    }
    if(!swapped){
    	break;
    }
  }
  return output;
}

function quickSort(list){
	var output = list.slice(0);
	if(output.length < 3){
  	return insertionSort(output);
  }
  var pivot = Math.floor(Math.random()*output.length);
  var temp = output[pivot];
  output[pivot] = output[0];
  output[0] = temp;
  var k = 0;
  for(var i=1;i<output.length;i++){
  	if(output[i] < output[0]){
    	temp = output[i];
      output[i] = output[++k];
...