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

编写的Insertion Sort代码结果不正确,请求技术排查

插入排序代码问题排查

你的插入排序代码出现错误的核心原因是while循环的条件判断存在疏漏。

问题根源

原代码中while循环的条件为:

while(i > 0 && Array[i] > key)

这里的i > 0会导致程序跳过对数组第0位元素的比较。当i递减到0时,循环直接终止,无法将当前key与数组第一个元素进行对比和交换,这就像示例中的26,明明比第一个元素31小,却无法被放到正确的起始位置。

修正后的代码

let arr = [31, 41, 59, 26, 41, 58];
let len = arr.length;

for (let j = 1; j < len; j++) {
    let key = arr[j];
    let i = j - 1;
    // 将 i > 0 改为 i >= 0,确保比较覆盖数组第一个元素
    while (i >= 0 && arr[i] > key) {
        arr[i + 1] = arr[i];
        i = i - 1;
    }
    arr[i + 1] = key;
}

console.log(arr); // 输出:[26, 31, 41, 41, 58, 59]

额外建议

  • 不要用Array作为变量名,它是JavaScript的内置构造函数,容易引发命名冲突,改用arr这类更安全的名称。
  • 修正后的i >= 0条件,会让程序从当前元素的前一位开始,一直向前对比到数组的第一个元素,确保所有比key大的元素都被后移,最终将key插入到正确位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:05:22