C++ 这是插入排序还是冒泡排序?
在一次编程考试中,我被要求做一个插入排序算法来排序老师给我们的数字 我以为我搞定了。这可能不是最短的算法,但我尽了最大努力,按照要求进行排序 问题是,我的老师告诉我我做了冒泡排序而不是插入排序,并且拒绝再次检查。我很确定这是一种插入式排序 你能告诉我你的想法吗 我们假设先显示无序数组,然后显示步骤,最后显示有序数组C++ 这是插入排序还是冒泡排序?,c++,sorting,bubble-sort,insertion-sort,C++,Sorting,Bubble Sort,Insertion Sort,在一次编程考试中,我被要求做一个插入排序算法来排序老师给我们的数字 我以为我搞定了。这可能不是最短的算法,但我尽了最大努力,按照要求进行排序 问题是,我的老师告诉我我做了冒泡排序而不是插入排序,并且拒绝再次检查。我很确定这是一种插入式排序 你能告诉我你的想法吗 我们假设先显示无序数组,然后显示步骤,最后显示有序数组 #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR*
#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;
}
#包括“stdafx.h”
#包括“iostream”
使用名称空间std;
int _tmain(int argc,_TCHAR*argv[]{
双基尔梅[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,36,7};
cout这是插入排序。它非常原始。正如您所看到的,它使用每个元素,并通过比较元素前后用于循环的位置来尝试找到它的位置。为什么您的数组被称为killme
?它是用另一种语言编写的吗?如果不是,您需要更好地命名变量,以免混淆rself.你希望得到什么样的答案?请阅读抱歉,我是这个网站的新用户,我正在了解它的工作原理。两者都不是,但它执行的比较与冒泡排序一样多,因为在递增I时会有冗余比较。与插入排序相比,查找新的未排序元素的方法效率低下(您知道前K个元素已经排序,但您需要再次比较)。您将新元素插入已排序子列表的方法是气泡式的,这可能会使您的讲师将其忽略。总体而言,您进行的插入排序比较大约是插入排序的两倍,并且与所需相比,您在处理元素方面花费的时间增加了50%。