配列ベースの直接挿入ソートアルゴリズムとコード実装
1066 ワード
配列ベースの直接挿入ソートアルゴリズム:
a[0]は歩哨として配列が秩序配列と無秩序配列に分けられ、初期秩序配列L 1にはa[1]の要素しかなく、a[2]−a[n]は無秩序配列L 2である.順番にa[2]-a[n]をL 1に挿入する:a[i]をL 1に挿入する前に、L 1の中で後ろから適当な位置を探す(検索中にa[i]より大きい要素を1つ後ろに移動する).n-1回の挿入を実行した後、L 2の中の要素はすべてL 1の中に挿入し、L 1は1つの完全な秩序の表である.
コード実装:
検討と指摘を歓迎します.- -
a[0]は歩哨として配列が秩序配列と無秩序配列に分けられ、初期秩序配列L 1にはa[1]の要素しかなく、a[2]−a[n]は無秩序配列L 2である.順番にa[2]-a[n]をL 1に挿入する:a[i]をL 1に挿入する前に、L 1の中で後ろから適当な位置を探す(検索中にa[i]より大きい要素を1つ後ろに移動する).n-1回の挿入を実行した後、L 2の中の要素はすべてL 1の中に挿入し、L 1は1つの完全な秩序の表である.
コード実装:
// ( ) insert-sort
// , “for(j=i-1;a[0]「それでいい
#include
#include
int InsertSort(int a[], int n)
{
int i,j;//i 、j
for(i=2;i<=n;i++)
{
if(a[i]= ( テーブルの の )、 の を します( テーブルを し、 は されません)。
NULL;
}
return 0;
}
int main()
{
int i,k;
int n;
printf("Please input the Number of words: ");
scanf("%d",&n);
int a[n+1]; //a[0] を し、a[1]-a[1] べ え ち を し、n+1を とする。
a[0]=0; // a[0]
printf("Please input the %d words: ",n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
InsertSort(a,n);// ソート
printf("InsertSort output : ");
for(i=1;i<=n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
検討と指摘を歓迎します.- -