对于编程考试,我被要求制作插入排序算法来订购老师给我们的数字。
我以为我把它钉了下来。它可能不是最短的算法,但我尽了最大努力,并按照要求排序。
问题是,我的老师告诉我,我做了冒泡排序而不是插入排序,并拒绝再次检查。我很确定这是一种插入排序。
你能告诉我你的想法吗?
我们假设首先显示无序数组,然后显示步骤,最后显示有序数组。
#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;
}
}
cout << endl;
system("PAUSE");
return 0;
}
输出1
输出2
输出3
答案 0 :(得分:1)
这是插入排序。它非常原始。你可以看到它通过比较使用循环之前和之后的元素来使每个元素和trys找到它的位置