FC2ブログ

    おたく☆あかでみー ~オタク達よ!賢くあれ!~

    日常生活に役立つ知識や知恵を貪欲に収集し、分かりやすくアウトプットする事がモットーです!最近はガールフレンド(仮)の攻略が熱い!

    生活に役立つソート術:クイックソート編

    クイックソートの概要については、続きを読むを参照して下さい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

    これでソート終了です。
    [ 2012/12/29 23:42 ] 数学、情報 | TB(0) | CM(0)
    コメントの投稿












    管理者にだけ表示を許可する
    トラックバック
    この記事のトラックバックURL