
http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/images/quick-sort-image.gifより引用
のような図を見ると思う。
この図を素直に、コーディングしろといわれたら、こうやってコーディングするんじゃないだろうか
//クイックソート(図から考えたバージョン)
リスト クイックソート(リスト 対象リスト)
{
もし、対象リストの要素が1個以下なら
return 対象リスト;
対象リストから基準値を1個取る
リスト生成(new)
小さいものリスト
大きいものリスト
対象リストの要素を全てチェックするまで、以下の処理繰り返し
もし、対象リストの要素が、基準値より小さければ
小さいものリストに入れる
もし、対象リストの要素が基準値以上だったら、
大きいものリストに入れる
対象リストフリー
return リスト結合(クイックソート(小さいものリスト),リスト(基準値),クイックソート(大きいものリスト)
}
でも、実は、クイックソートというのは、こうやっていないらしい
リストをわざわざ作っていない。
実際、Wikipediaには、違うアルゴリズムが書いてある。
それについて、メモメモ。
■実際にやっていること
どうやら、こういうロジックのようだ。
以下、小さい順に並べる場合。
(1)対象の数列があるとする
1 9 5 3 2 7 6

(7)ここ(赤線のところ)でわけると、左側は基準値よりも少ない数
右側は、基準値以上の数に分かれる・・・
なので、
左側の数字列{1,2,5,3}でクイックソート、
基準値{6}、
基準値を除く右側の数字{9,7}でクイックソート
して、連結すればいいことになる
・・・らしい。ほお・・・