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]