[面试] 手写题-插入排序

插入排序O(n^2)

假设索引i之前的为已排过序的, 让arr[i]与之前的数据在一个个比较,找到位置,插入

js 复制代码
function insertionSort(arr) {
    const len = arr.length;
    // 从第二个元素开始,作为待插入元素
    for (let i = 1; i < len; i++) {
        const current = arr[i]; // 待插入元素current 
        let j = i - 1;
        
        // 在已排序序列中找到插入位置
        while (j >= 0 && arr[j] > current) {
            arr[j + 1] = arr[j]; // 元素后移
            j--;
        }
        arr[j + 1] = current; // 插入待插入元素
    }
    return arr;
}

看这个视频:b站视频:插入排序 快速学会插入排序逻辑+代码