プログラミング試験のために、教師が私たちに与えた番号を注文するための挿入ソートアルゴリズムを作るように求められました。
私はそれを釘付けと思った。それは可能な限り最短のアルゴリズムではなかったかもしれませんが、私は最善を尽くしました。
事は、私の先生は、私は挿入の並べ替えの代わりにバブルの並べ替えをして、それを再度確認することを拒否したと私に言った。私はかなりそれが挿入の並べ替えであることを確信しています。
あなたの考えを教えてください。
我々はまず、順序のない配列、次にステップ、そして最後に順序付けられた配列を表示すると仮定します。
#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
回答:
回答№1は1これは挿入ソートです。それは非常に原始的です。あなたが見ることができるように、それはそれぞれの要素を取り、ループのために使用する前と後の要素を比較することによってその場所を見つけることを試みる