数组排序——插入排序

插入排序的思想:跟斗地主抓牌类似。一张一张的抓,先抓一张,后面再抓的牌和当前手里已经有的牌一张一张进行比较,如果新抓的牌比某张牌大,就用[].splict(开始索引,删除长度,插入元素)方法,在新数组中插入。

原数组:

var arr = [6, 5, 4, 3, 2, 1];

排序函数:

function insert(arr) {
      let newArr = [];    //保存抓到的第一张牌
      newArr.push(arr[0]);

      // 从第二项开始依次抓牌,一直把台面上的牌抓光
      for (let i = 1; i < arr.length; i++) {
        let A = arr[i];  // A是新抓的牌,从后向前比较
        for (let j = newArr.length - 1; j >= 0; j--) {
          let B = newArr[j];  // B是当前比较的牌
          // 如果当前新牌A比要比较的牌B大,就把A放到B的后面
          if (A > B) {
            newArr.splice(j + 1, 0, A);
            break;
          }
          // 已经比到第一项,我们把新牌放到手中最前面
          if (j === 0) {
            newArr.unshift(A);
          }
        }
      }
      return newArr;
    }

输出:

var nArr = insert(arr);
console.log(nArr);  // [1, 2, 3, 4, 5, 6]

 

posted @ 2020-05-12 16:54  俄罗斯方块  阅读(196)  评论(0编辑  收藏  举报