C言語基本並べ替えアルゴリズムのshell順序付けの例


本明細書の例は、C言語の基本的な順序付けアルゴリズムの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言語プログラムの設計に役に立ちます。