はじめての C

ソート法 4

シェルソートは、挿入整列法の 1つの バリエーションです。

挿入整列法であることを示す 理由の 1つに、要素は その右側の 要素としか 互いに 交換できない、ということがあり、配列を 通して、一度に 1ヶ所に 動けるだけです。 それで、時間が かかってしまいます。

シェルソートは、その分岐操作 - subdriving - で、要素を インタリーブ(介在)グループ - interleaved groups - に 収納し、各グループごとに ソートすることで、この問題を 解決しています。

例題で 考えてみましょう。

元になる リストです ▽

5, 6, 2, 7, 8, 4, 3, 1

シェルソートの 実装によって、リストの要素は 4組の ペアに 分割されます ▽

(5, 8) (6, 4) (2, 3) (7, 1)

それぞれのペアを ソートします ▽

5, 4, 2, 1, 8, 6, 3, 7

リストが 4要素ずつ 2セットに 分割されます ▽

(5, 2, 8, 3) (4, 1, 6, 7)

リストを ソートします ▽

2, 1, 3, 4, 5, 6, 8, 7

もう一度 全体を ソートすれば ▽

1, 2, 3, 4, 5, 6, 7, 8

なんだか、カードマジックみたいだ ...