插入排序每次排一个数组项,以此方式构建最后的排序数组。
每次排的数组项依次增加1,第一次需要排序的数组项为1,第二次为2,直到需要排序数组的长度。
思路
数组长度为n
需要排n轮
每轮需要比较 ->直到当前比较的数大于前面排好的数组项为止 每次比较满足条件就交换位置
let array = [5, 4, 3, 2, 1]
for(let i = 0; i < array.length; i++){
let j = i
let tem = array[i]
while(j > 0 && tem < array[j - 1]){
[array[j],array[j-1]] = [array[j-1],array[j]] // 解构赋值
j--
}
}
console.log(array)
插入排序算法的关键点在于,从少到多这个过程,每次都是排好序的。
使用while循环不使用for循环是更符合语义的。
插入排序在需要排序的数据少的情况下,比冒泡排序和选择排序要快,因为插入排序的每轮的比较次数100%都是比较最少次数。