js插入排序

**插入排序**
      插入排序主要是将需要排序的数组分为两部分,取第一个元素作为已排序数组,其余元素作为未排序数组,依次取未排序数组的元素和已排序数组中的元素进行对比插入,最终未排序数组变为空值,已排序数组就是排序结果

let arr = [8,9,1,7,2,3,5,4,6,0];
for (var i = 0, len = arr.length; i < len; i++) {
        var item = arr[i];     // 储存当前位置的值
        for (var j = i - 1; j > -1 && arr[j] > item; j--){ // 和前面已经有序的部分,比较,交换
            arr[j + 1] = arr[j];
        }   
        arr[j+1] = item;
        console.log([...arr]);
    }
    console.log([...arr]);

具体步骤:

第一步   i=0   item = 8   j = -1    直接结束     [8, 9, 1, 7, 2, 3, 5, 4, 6, 0]
第一步   i=1   item = 9   j = 0    8<9  不变 

           结束    j +1赋值为9      [8, 9, 1, 7, 2, 3, 5, 4, 6, 0]

第三步  i = 2  item = 1 j = 1   9>1 赋值  [8,9,9,7,2,3,5,4,6,0]

          j=0     8>1  赋值  [8,8,9,7,2,3,5,4,6,0]

          j=-1   结束   j+1赋值为1  [1,8,9,7,2,3,5,4,6,0]

第三步  i =3  item = 7  j = 2   9>7 赋值  [1,8,9,9,2,3,5,4,6,0]

                    j=1    8>7  赋值  [1,8,8,9,2,3,5,4,6,0]

                                    j=0    1<7  不变     结束   j+1赋值为7  [1,7,8,9,2,3,5,4,6,0]

最终得到结果[0,1,2,3,4,5,6,7,8,9]

 

posted @ 2022-08-10 17:59  奔跑的哈密瓜  阅读(297)  评论(0编辑  收藏  举报