C言語基本並べ替えアルゴリズムのshell順序付けの例
本明細書の例は、C言語の基本的な順序付けアルゴリズムのshell順序付けを説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
shell順序付けは直接挿入方法の改善方法である。
shell順序付けは直接挿入方法の改善方法である。
/*-------------------------------------------------------------------------------------
Shell_sort.h
shell , , .
:( , )
1. h[1]=size, h[k] = h[k-1]/2.
O(N^2).
: 2^n, , ,
。 shell 。
。
2. Hibbard : h = 1,3,7,,2^k-1
O(n^{1.5});
3. Sedgewick :{1,5,19,41,109,}
-------------------------------------------------------------------------------------*/
#ifndef SHELL_SORT_H
#define SHELL_SORT_H
#include "typedef.h"
void Shell_sort(T* a, int n)
{
for(int gap = n; gap > 0; gap = gap/2)
{
for(int i = 0; i != n; ++i)
{
T temp = a[i];
int j = i - gap;
for( ; j >= 0 && a[j] > temp; j = j-gap)
a[j+gap] = a[j];
a[j+gap] = temp;
}
}
}
#endif
ここで述べたように、皆さんのC言語プログラムの設計に役に立ちます。