この記事は「
個別のアルゴリズムをつつく2−挿入ソート。ちょっと右へ寄ってくださる?
」
との連動企画ピヨ。詳しい説明はそちらを見てね。
そして、ボクの実装例を見る前に自分で実装を試みよう。
お待たせ♪それじゃつつくピヨ♪
#include
using namespace std;
//保持するデータの最大数
static const int MAX = 10;
//基本挿入ソート
class SearchMan {
public:
static void InsertSort(int target[MAX]) {
for(int insertIndex = 1; insertIndex < MAX; insertIndex++) {
//挿入場所に当たるデータを退避
int tmp = target[ insertIndex ];
//移動する位置
int moveIndex = insertIndex -1;
//後ろから順番に横へずらしていく・・・
while( moveIndex >= 0 ) {
//挿入位置決定!
if ( tmp > target[ moveIndex ] ) break;
//挿入するべき位置じゃないので横へずらす
target[ moveIndex + 1 ] = target[ moveIndex ];
//隣を調べる
moveIndex--;
}
//あるべき位置へデータを挿入する
target[ moveIndex + 1 ] = tmp;
}
}
};
int main(void)
{
int values[MAX] = { 9,3,5,6,2,8,7,0,1,4 };
//整理前のデータを確認
cout << "整列前のデータを表示します。" << endl;
for(int i = 0; i < MAX; i++) cout << values[i] << '\t';
cout << endl;
//ソートする
SearchMan::InsertSort( values );
//整理後のデータを確認
cout << "整列後のデータを表示します。" << endl;
for(int i = 0; i < MAX; i++) cout << values[i] << '\t';
cout << endl;
return 0;
}