はじめての 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 - で 同じぐらい 誇ってもいいような ソート法は、他には ないでしょうね。

"K&R 2nd" に 載ってる シェルソートと 比べてみるのも いいかも -> コチラ