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

请协助判定我的排序代码是Insertion Sort还是Bubble Sort?

我的插入排序代码被误判成冒泡排序,求帮忙鉴定!

我在编程考试里被要求写一个插入排序(Insertion Sort)算法,用来给老师提供的数字数组排序。我觉得自己写得没问题——虽然代码不是最简洁的那种,但确确实实实现了要求的排序功能。结果老师直接判定我写的是冒泡排序(Bubble Sort),还拒绝重新检查。我坚信这就是插入排序,所以特意来请大家帮忙判断一下!

考试要求需要先展示无序数组、再输出每一步的排序过程、最后展示排序完成后的有序数组,我的代码如下:

#include "stdafx.h"
#include "iostream"
using namespace std;
int _tmain(int argc, _TCHAR* argv[]) {
 double killme[34] = {7,5,6,5,78,9,63,36,32,5,78,63,2,1,9,45,23,32,21,45,78,32,58,23,36,41,23,45,21,45,6,9,36,7};
 cout << "Arreglo desordenado: \n";
 for (int i = 0; i < 34; i++) {
 if(i != 33) {
 cout << killme[i] << ", ";
 } else {
 cout << killme[i] << ".";
 }
 }
 cout << endl;
 cout << endl;
 cout << "Pasos: " << endl;
 double var;
 int j = 1;
 int k = 0;
 for (int i = 0; i < 33; i++) {
 if (killme[i+1] < killme[i]) {
 while (killme[i+1] < killme[i]) {
 var = killme[i];
 killme[i] = killme[i+1];
 killme[i+1] = var;
 i--;
 if (i<0) {
 break;
 }
 }
 for (int i = 0; i < 34; i++) {
 if (i != 33) {
 cout << killme[i] << ",";
 } else {
 cout << killme[i] << ".";
 }
 }
 cout << endl;
 cout << endl;
 }
 i = k;
 k++;
 }
 cout << "Arreglo ordenado: \n";
 for (int i = 0; i < 34; i++) {
 if (i != 33) {
 cout << i+1 << "." << killme[i] << ", " << endl;
 } else {
 cout << i+1 << "." << killme[i] << "." << endl;
 }
 }
 // 原代码末尾的"co..."应为输入截断,不影响核心逻辑判断
}

核心逻辑分析:先搞懂插入排序和冒泡排序的本质区别

  • 插入排序:核心是把单个未排序元素逐个插入到已排序序列的正确位置。常见实现要么是先暂存元素,再把前面比它大的元素往后移,最后插入;要么就像你这样,通过相邻交换的方式,把当前元素一步步往前挪,直到它找到合适的位置。
  • 冒泡排序:核心是多次遍历整个未排序区间,每次把区间里最大的元素“冒泡”到末尾,每一轮都会确定一个最大元素的最终位置,不会针对单个元素向前回溯整个已排序区间。

你的代码完全是插入排序的逻辑

看你的代码流程:

  1. 从数组的第二个元素开始(通过i+1定位),当它比前一个元素小时,进入循环
  2. 不断和前一个元素交换,同时i--向前回溯,直到它不再小于前一个元素(或者到数组开头)
  3. 每完成一次元素的“插入”操作,就打印当前数组状态

这完全是插入排序的核心思路——聚焦于把当前未排序的元素,插入到前面已排序区间的正确位置。你只是用了相邻交换的实现方式,但这丝毫不改变它是插入排序的本质。

而冒泡排序不会这样针对单个元素往前回溯,它是每一轮从左到右扫,把大元素往后换,每一轮只处理到未排序的末尾。你的代码逻辑和冒泡排序完全不沾边。

所以老师的判断确实有误,你可以拿着这个分析去和老师沟通,把两种排序的核心区别讲清楚,再结合你的代码逻辑说明,应该能让老师重新判断的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:44:59