插入排序:
新建一个数组:依次拿出原数组中的每一项往新数组里面插入,插入的时候需要遵循一个规律:
1)方向:从右向左
2)最终实现的效果,从小到大,在插入的时候,拿出的项
从右向左依次比较(新数组),如果拿出的项大(或者相等),就直接插入首次比它小的后面,
3)如果一直比到第一项了,条件还没满足,后面就是最小项,直接放到数组的最前面
var newAry=[]
第一次====>我拿出第一项直接放进去,不用进行比较
newAry=[34]
第二次====> 拿出56 [34,56]
第三次====> 拿出12 [12,34,56]
第四次=====> 拿出66 [12,34,56,66]第五次=====> 拿出12 [12,12,34,56,66]
var ary=[34,56,12,66,12];
function insertSort(ary){
//最终排序好的数组盒子
var newAry=[];
//拿出的第一项放进去,此时盒子中只有一项,不用个比较
newAry.push(ary[0]);
// 依次拿出原数组中的每一项进行插入
for(var i=1;i<ary.length;i++){
var getItem=ary[i];
// 在插入的时候需要跟新数组中的每一项进行比较(从右向左)
for(var j=newAry.length-1;j>=0;j--){
var newItemAry=newAry[j];
if(getItem>=newItemAry){
// 如果拿出的项比某项大或者相等,就放到此项的后面
newAry.splice(j+1,0,getItem);
// 插入完毕,不用再继续比较停止循环;
break;
}
if(j==0){
//如果都已经比到第一项了,还没满足条件,说明这个就是最小项,我们之间插入到数组的最前面
newAry.unshift(getItem);
}
}
}
return newAry;
}
var res=insertSort(ary)