lixiaojuan12 / Summary-of-code

手写代码爽起来~~~
0 stars 0 forks source link

17. 插入排序 #17

Open lixiaojuan12 opened 4 years ago

lixiaojuan12 commented 4 years ago
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);
console.log(res);