Python实现插入排序的代码有效性及与标准算法差异问询
结论
你编写的代码不属于有效的插入排序实现,你实际写出的是冒泡排序算法。
核心差异说明
- 你的代码逻辑:外层循环控制遍历轮次,每轮完整遍历整个数组的相邻元素对,只要前项大于后项就交换位置。这种每次遍历将当前未排序区间的最大值逐步“浮”到末尾的逻辑,是冒泡排序的典型特征,时间复杂度和冒泡排序一致为O(n²),虽然也能正确排序,但和插入排序的核心实现逻辑完全不同。
- 标准插入排序的核心逻辑:将数组分为「已排序区间」和「未排序区间」,每次仅取出未排序区间的第一个元素作为待插入值,向前遍历已排序区间找到它的合适位置插入即可,不需要每轮遍历所有未排序元素做两两交换,你贴的书籍伪代码完全符合这个逻辑。
简单验证方法
你可以在你的代码每次外层循环结束后打印一次数组,会看到输出是:
第一轮:[1, 0, 2, 8, 5, 9](最大值9归位)
第二轮:[0, 1, 2, 5, 8, 9](次大值8归位)
完全符合冒泡排序的执行过程,和插入排序的执行过程有明显区别。
内容的提问来源于stack exchange,提问作者saran
相关产品推荐
相关产品推荐

