排序逻辑
- 序列中的数据分为:已排序和未排序两个区域。
- 从未排序区域中取出第一个元素,与已排序区域最后一个元素比较(从后向前检查),将其插入到合适的位置,插入之后已排序区域序列依然有序,当未排序区域中最后一个元素插入到已排序区域之后,排序完成。
代码实现
insertSort(arr) {
if (!arr.length) return []
for(let i = 1; i < arr.length; i++) {
let temp = arr[i]
let j = i - 1
for(; j>=0, arr[j]>temp; j--) {
arr[j + 1] = arr[j]
}
arr[j + 1] = temp
}
console.log(arr)
}
代码解析
第一次循环变量i为什么要取1呢? 其实是将第0个元素作为已排好序的数据,从第二个元素开始与已排好序的数据进行比较。 可以参考这篇文章 点击这里,解释的非常好(java语言)。