/ /この挿入ソートやバブルソートですか? - C ++、ソート、バブルソート、挿入ソート

この挿入ソートまたはバブルソートですか? - C ++、ソート、バブルソート、挿入ソート

プログラミング試験のために、教師が私たちに与えた番号を注文するための挿入ソートアルゴリズムを作るように求められました。

私はそれを釘付けと思った。それは可能な限り最短のアルゴリズムではなかったかもしれませんが、私は最善を尽くしました。

事は、私の先生は、私は挿入の並べ替えの代わりにバブルの並べ替えをして、それを再度確認することを拒否したと私に言った。私はかなりそれが挿入の並べ替えであることを確信しています。

あなたの考えを教えてください。

我々はまず、順序のない配列、次にステップ、そして最後に順序付けられた配列を表示すると仮定します。

#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

OUTPUT1

出力2

OUTPUT2

出力3

OUTPUT3

回答:

回答№1は1

これは挿入ソートです。それは非常に原始的です。あなたが見ることができるように、それはそれぞれの要素を取り、ループのために使用する前と後の要素を比較することによってその場所を見つけることを試みる