原理:每次以一个中间数进行分组,然后组内进行插入排序,最终的分组都是1.
var arr=[1,4,22,7,99,203,3,5,2,4,4];
function shell(arr){
for(var cap=Math.floor(arr.length/2);cap>0;cap=Math.floor(cap/2)){
for(var i=cap;i<arr.length;i++){
for(var j=i-cap;j>=0&&arr[j]>arr[j+1];j-=cap){
var temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
shell(arr);
console.log(arr);