はじめての C
「ソート法 6」
void shellsort(int *list, int n)
{
int h = 1;
for ( ; h <= n / 9; h = 3 * h + 1)
;
for ( ; h > 0; h /= 3)
insertion_sort(list, h, n);
}結論として、この 2つの関数は、ソートルーティン - sorting routine - で 最初に 選択するのには、オールアラウンドに 適している 関数だ、ということです。
まず 初めに、プログラムの中で シェルソートを 使ってみるのは、いいアイデアです。 目標に対し、あまりにも 遅いことが わかったときだけ、より 洗練された ソート法に 乗り換えれば いいのです。
シェルソートは 短いし 速いし、それに いろいろなケースでも、ほんとに お行儀よく ふるまってくれます。
これだけの度合 - degree - で 同じぐらい 誇ってもいいような ソート法は、他には ないでしょうね。