C言語による挿入ソートの実装
サンプルプログラム
ここでは実際に、C言語による挿入ソートの実装を見てみることにします。以下のプログラムを実行してみてください。
listex5-select-1
#include <stdio.h>
#define MAX_LENGTH 5
void showData(int*,int);
void main(){
int array[MAX_LENGTH] = { 5,2,3,1,4 };
int i,j,tmp;
for(i = 1; i < MAX_LENGTH; i++){
showData(array,MAX_LENGTH);
j = i;
// 定められた範囲内で、順序の入れ替えが必要な場合の処理
while(j >= 1 && array[j-1] < array[j]){
// 値の入れ替え
tmp = array[j];
array[j] = array[j-1];
array[j - 1] = tmp;
j--;
showData(array,MAX_LENGTH);
}
}
showData(array,MAX_LENGTH);
}
// 配列の表示
void showData(int* array,int length){
int i;
for(i = 0; i < length; i++){
printf("%d ",array[i]);
}
printf("\n");
}
5 2 3 1 4
5 2 3 1 4
5 3 2 1 4
5 3 2 1 4
5 3 2 4 1
5 3 4 2 1
5 4 3 2 1
5 2 3 1 4
5 3 2 1 4
5 3 2 1 4
5 3 2 4 1
5 3 4 2 1
5 4 3 2 1
イメージとしては最初の要素と次の要素という2つの要素をまずは並べ替えて順序道理にし、さらにその中に次のようを加えて、その中での順序通りに並べていく、ということを繰り返していくイメージです。
先頭から並べ替えながら、次の要素をふさわしい場所に挿入していく、というイメージを持つとわかりやすいでしょう。






