SOURCE

/**
 遍历 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]))
console 命令行工具 X clear

                    
>
console