クイックソートの概要については、続きを読むを参照して下さいm(__)m
ここでは、クイックソートをアレンジし簡略化した、日常で使えるソート術の紹介をします。
例えば、EXCEL等が無い状況で、欲しい物の値段を安い順に並べ替えなければならないとします。
A:120円 B:80円 C:95円 D:370円 E:280円 F:340円 G:160円
H:50円 I:230円 J:290円 K:1020円 L:1260円 M:1040円 N:890円 O:550円 P:70円
Q:490円 R:320円 S:770円 T:910円 U:2200円 V:1870円 W:2560円 X:2390円 Y:1000円 Z:960円
これを1番安い物を探して・・・2番目に安い物を探して・・・3番目に(ryを繰り返せば、間違いなく日が暮れるでしょう(笑)
ここで、効率の良いソート術を使います!
まずは、A:120円を基準にし、それより安い値段の物とそれ以上の値段の物に分けます。
<Aより安い>
B:80円、C:95円、H:50円、P:70円
<A以上の値段>
A:120円、D:370円、E:280円、F:340円、G:160円、I:230円、J:290円、K:1020円、L:1260円、M:1040円、N:890円、O:550円、Q:490円、R:320円、S:770円、T:910円、U:2200円、V:1870円、W:2560円、X:2390円、Y:1000円、Z:960円
Aより安い値段の方は、楽に並べ替えられるでしょう。
安い→高い
H:50円、P:70円、B:80円、C:95円
A以上の値段の方は、次はD:370円を基準にして、先程と同じ工程を行います。
<Dより安い>
A:120円、E:280円、F:340円、G:160円、I:230円、J:290円、R:320円、
<D以上の値段>
D:370円、K:1020円、L:1260円、M:1040円、N:890円、O:550円、Q:490円、S:770円、T:910円、U:2200円、V:1870円、W:2560円、X:2390円、Y:1000円、Z:960円
Dより安い値段を並べ替え、上記の赤字と組み合わせます。
安い→高い
H:50円、P:70円、B:80円、C:95円、A:120円、G:160円、I:230円、E:280円、R:320円、F:340円
これを繰り返します。
<Kより安い>
D:370円、N:890円、O:550円、Q:490円、S:770円、T:910円、Y:1000円、Z:960円
<K以上の値段>
K:1020円、L:1260円、M:1040円、U:2200円、V:1870円、W:2560円、X:2390円
最終的にはこうなります。
安い→高い
H:50円、P:70円、B:80円、C:95円、A:120円、G:160円、I:230円、E:280円、R:320円、F:340円、D:370円、Q:490円、O:550円、S:770円、N:890円、T:910円、Z:960円、Y:1000円、K:1020円、M:1040円、L:1260円、V:1870円、U:2200円、X:2390円、W:2560円
このソート術を日常で使う機会はあまり無いかもしれませんが・・・覚えておくと役に立つかもしれません。
【クイックソートとは】
例えば、バラバラに配置された8つの数字があるとします。
5 8 3 4 1 7 6 9
これを少ない順に並べ替えます。その際、軸となる数字を1つ選択します。ここでは一番左にある5を軸となる数字にします。
5 8 3 4 1 7 6 9
そして、左から5以上の数字を検索、右から5未満の数字を検索します。見つかった場合、それらを交換します。
5 8 3 4 1 7 6 9 ※緑字は未検索部分
5と1を交換し、再度検索。
1 8 3 4 5 7 6 9
8と4の交換。そして、検索ラインが交差する場所でデータを2分割します。
1 4 3 | 8 5 7 6 9
分割したデータそれぞれに上と同様の処理を施します。
1 | 4 3 | 6 5 7 | 8 9
1 | 3 4 | 5 | 6 7 | 8 9
これでソート終了です。