You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教:我实现的算法是否为Insertion Sort?求DSA学习指导

你的代码确实属于插入排序的实现

你的这段代码完全符合插入排序的核心逻辑:将未排序区间的元素逐个向前与已排序区间的元素对比,通过交换找到其在已排序区间的正确位置,最终完成整个数组的排序。

核心逻辑对应分析

  • 外层for循环遍历数组的每个元素,相当于依次取出未排序区间的元素
  • 内层while循环负责将当前元素向前逐个比较,若当前元素更小则交换位置,直到它处于已排序区间的合适位置为止

小优化建议

外层循环可以从i=1开始(而非i=0),因为当i=0时,num-1=-1,访问number[-1]会得到undefined,此时number[num] < number[num-1]的结果为false,循环不会执行,从i=1开始更贴合插入排序的常规实现,也能减少一次无意义的循环迭代。优化后的代码如下:

function insertion(number){
    let length = number.length;
    for(let i = 1; i < length; i++){
        let num = i;
        while(num > 0 && number[num] < number[num-1]){
            let temp = number[num-1];
            number[num-1] = number[num];
            number[num] = temp;
            num--;
        }
    }
    return number;
}
console.log(insertion([3,2,4,6,5,1,2,-1]))

原代码及运行结果

原代码:

function insertion(number){
    let length = number.length;
    for(let i = 0; i< length; i++){
        let num = i;
        while(number[num] < number[num-1]){
            let temp = number[num-1];
            number[num-1] = number[num];
            number[num] =temp;
            num--;
        }
    }
    return number;
}
console.log(insertion([3,2,4,6,5,1,2,-1]))

运行结果:

Output = [ -1, 1, 2, 2, 3, 4, 5, 6 ]

内容的提问来源于stack exchange,提问作者Kunal Ahire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 03:20:36