冒泡排序、快速排序、插入排序、希尔排序、选择排序
//希尔排序
var list = [2,93,5,125,66,1];
//找出间隔分组
//初始的间隔大小
var interval = Math.round(list.length);
while(interval > 0) {
//根据间隔大小,进行插入排序
inserSort(list,interval);
//将间隔减半,取整
interval = parseInt(interval/2);
}
function inserSort(list ,interval) {
for(var i=1; i < list.length; i++) {
var m = i;
while(m - interval >=0 && list[m] < list[m-interval]) { //当后一个位置小于前一个位置时交换
swap(list,m,m-interval);
m -= interval;
}
}
}
// 插入排序
var list = [2,93,5,125,66,1];
for(var i = 1; i<list.length; i++) {
var m = i;
while(m-1 >= 0 && list[m] < list[m-1]) {
swap(list,m,m-1);
m--;
}
}
// 冒泡排序
var list = [2,93,5,125,66,1];
for(var i = 0;i <list.length-1; i++) {
for(var j = 0;j < list.length-i-1; i++){
if(list[j] > list[j+1]){
swap(list,j,j+1);
}
}
}
// 选择排序
var list = [2,93,5,125,66,1];
for(var i = 0; i < list.length-1; i++) {
min = list[i];
index = i;
for( var j = i; j < list.length; j++) {
if(list[j] < min) {
min = list[j];
index = j;
}
}
swap(list,i,index);
}
//快速排序
var list1 = [2,93,5,125,66,1];
function quicksort(list) {
if(list.length <=1) return list;
var index = parseInt(list.length/2);
var temp = list[index];
var left = [];
var right = [];
for(var i=0; i<list.length; i++) {
if( i == index) continue;
if( list[i] < temp) left.push(list[i]);
else right.push(list[i]);
}
return quicksort(left).concat(temp).concat(quicksort(right));
}