插入排序 原理
- 它的基本思想是将数组分为有序区间和无序区间,默认数组第一个元素为有序区间第一个元素,后面的为无序区间。
- 使用双重循环,外循环从第一个元素后开始,内循环对当前元素拿去与有序区间进行比较插入。
- 先拿当前元素(待排序)与已排好序的数组末位进行比较,若小于数组末位则进行交换,继续向前比较
js实现
insertionSort = (arr) => {
// 边界判断
if (arr == null || arr.length < 2) {
return arr
}
for (let i = 1; i < arr.length; i++) {
// 默认数组第一位元素已经排好序,
let temp = i // 无序区间首位末位是i,即temp
// 把无序区间队首拿去和有序区间比较,从有序区间尾开始向前比较,若小于则交换位置继续向前比较,直到temp大于比较的元素结束当前循环
while (temp > 0) {
if (arr[temp] < arr[temp - 1]) {
//es6新语法,可实现无第三方交换位置
[arr[te