/** 遍历 length - 1 次 从 i + 1 项开始往前遍历,两两比较小的往前移动, 时间复杂度 O(n2) */ function insertionSort(target) { let temp for (let i = 0; i < target.length - 1; i++) { for (let j = i + 1; j > 0; j--) { if (target[j] < target[j - 1]) { temp = target[j - 1] target[j - 1] = target[j] target[j] = temp } else { // 当不小于已排序好的最大值时 // 退出每次遍历,进行下一次 break } } console.log(`第${i + 1}次循环`, target) } return target } console.log(insertionSort([23, 32, 5, 72, 12, 1]))