javascript实现插入排序(直接插入排序和希尔排序)

Posted 江湖一支竹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript实现插入排序(直接插入排序和希尔排序)相关的知识,希望对你有一定的参考价值。

/**
* Created by kaer on 2017/4/30.
*/

//直接插入排序:取数组第一个作为基准值,其它值以它为基准顺序插入
function straight (a){
var newArr = [];
var first = a[0];
var len = a.length;
newArr.push(first);
for(var i = 1;i<len;i++){
var newLen = newArr.length;
var b = true;
for(var j = 0;j<newLen;j++){
if(newArr[j]>a[i]){
newArr.splice(j,0,a[i]);
b = false;
break;
}
}
if(b){
newArr.push(a[i]);
}
}
return newArr;
}

//console.log(straight([5,2,6,3,4,1,0]));
//希尔排序:直接插入排序的改进版,以len/2,len/4,len/8....1,为间隔从原数组中取值,分别应用直接排序
function shellSort(a){
var len = a.length;
for(var n=Math.floor(len/2);n>=1;n=Math.floor(n/2)){
for(var i=0;(i+n)<len;i++){
var arrTmp = [];
var iTmp = [];
var sortArr = [];
for(var k=i,j=0;k<len;j++,k=i+j*n){
arrTmp.push(a[k]);
// console.log(arrTmp);
iTmp.push(k);
}
sortArr = straight(arrTmp);
for(var m =0;m<sortArr.length;m++){
a[iTmp[m]] = sortArr[m];
}
}
}
console.log(a);
}

shellSort([5,2,6,3,4,1,0]);


















































以上是关于javascript实现插入排序(直接插入排序和希尔排序)的主要内容,如果未能解决你的问题,请参考以下文章

插入排序算法初学算法之排序--直接插入排序

结构-行为-样式-Js排序算法之 直接插入排序

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

JavaScript实现插入排序和希尔排序

常用排序算法直接插入排序

JavaScript希尔排序