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

咨询:我编写的代码是否为Insertion sort?逻辑正确但实现非常规?

这段代码是否属于插入排序?逻辑是否正确?

这段代码属于插入排序的变体实现,逻辑是正确的,但写法和标准插入排序不太一样。

标准插入排序的核心逻辑

标准插入排序的思路是:

  • 把数组分为已排序区间和未排序区间,初始已排序区间只有第一个元素
  • 从第二个元素开始,将当前元素作为「待插入值」
  • 向前遍历已排序区间,把所有比「待插入值」大的元素向后移动一位
  • 最后把「待插入值」放到空出来的正确位置

你的代码与标准实现的差异

你的代码核心思路符合插入排序,但实现步骤做了调整:

  1. 外层循环从i=0开始,先比较array[i]和array[i+1],如果前者更大就交换——这一步相当于把原本属于未排序区间的array[i+1]先换到已排序区间的末尾位置,再把这个交换后的array[i]作为待插入值。
  2. 嵌套循环向前遍历已排序区间时,你通过逐次交换的方式把待插入值往前挪,而标准实现通常是先保存待插入值,批量移动元素后再赋值。但两种方式的效果是等价的,都是把待插入值放到已排序区间的正确位置。

逻辑正确性验证

从代码的打印输出可以看到,每一步都在将当前元素插入到已排序区间的合适位置,最终能得到完全有序的数组,所以逻辑是正确的。

简单来说:你的代码本质还是插入排序,只是用了一种非常规的相邻交换前置的写法,核心逻辑没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:00:56