插入排序
function insertSort(arr) {
const len = arr.length
for (let i = 1; i < len; i++) {
for (let j = i; j > 0; j--) {
if (arr[j] < arr[j-1]) {
const v = arr[j]
arr[j] = arr[j-1]
arr[j-1] = v
} else {
break;
}
}
}
return arr;
}
或者
function insertSort(arr) {
const len = arr.length
for (let i = 1; i < len; i++) {
for (let j = i; j > 0 && arr[j] < arr[j-1]; j--) {
const v = arr[j]
arr[j] = arr[j-1]
arr[j-1] = v
}
}
return arr;
}
从索引为1的开始,进行和前一项的数值进行比较,满足比较条件的话就行换位,不满足的话停止交换
如图:
排序算法优化:
function optimizeInsertSort(arr) {
const len = arr.length
for(let i = 0; i < len; i++) {
const e = arr[i]
let j
for (j = i; j > 0 && arr[j-1] > e; j--) {
arr[j] = arr[j-1]
}
arr[j] = e
}
return arr
}