插入排序 简单易懂

插入排序:
新建一个数组:依次拿出原数组中的每一项往新数组里面插入,插入的时候需要遵循一个规律:
               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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值