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];
...