クイックソート

これは、もっとも有名な整列法の一つです。
データが小規模な場合はそれほど高速とは言えませんが、
一般にもっとも高速なソートと言われています。
まず上記のケースを考えてみましょう。
6・1・8・5・・・と、数字がランダムにならんでいますね。
このデータを昇順(挿入ソート参照)に並べ替えるケース を考えます。
まず、中央のデータに着目します。
この場合は5という値になりますね。

そして、この数値の並びのなかで、5を基準にして、
より小さいものを左側へ、大きいものを右側へ移動させます。
さて、次に具体的にやってみましょう。
ここで、両端のデータに着目します。

左端のデータを指し示すポインタ(青色の記号)を p1 と命名します。
右端のデータを指し示すポインタ(黄色の記号)を p2 と命名します。

次はまず、p1 の役目を説明します。
p1は、左から右へ向かって、基準以上、つまり5以上の数字を探します。

今回は、左端が6なので、いきなり、5以上ですね。
だから移動無しです。
p2 は、右から左に向かって基準以下、つまり5以下の値を探します。

この場合は、そう、2のところで止まります。

そうしたら、次に、p1 の示す内容と
p2 の示す内容を交換します。
こんな感じです。

交換したら、p1 を一つ右に、p2 を一つ左に進めておきます。
p1 は再び、左から右に向かって、5以上のデータを探します。

今度は8の所でとまります。
p2 は、右から左に向かって、5以下のデータを探します。

これは3の所で動きません。
ふたたび、p1 と p2 の示すデータを交換します。

そして、p1 は右に一つ、p2 は左に一つすすめます。
p1 と p2 が一致したので、これで処理は完了です。
最初からもう一度観るには、下のボタンを押して下さい。
 
全然整列して無いでは無いかって?
つづきがあります。近日アップ予定、請うご期待。