ひろまささんの連載記事『PHP で遊ぼう』の第6回は if と変数。この記事では並べ替え、いわゆるソートのアルゴリズムについて書かれています。
ソートについて習ったのは大学のときです。サンプルコードは Pascal でした。懐かしさを感じるくらい前の話。3つの数字のソートプログラムを募集とのことでしたので、懐かしついでにやってみました。
- <html>
- <body>
- < ?php
- $left = 8;
- $center = 2;
- $right = 4;
- // 並べ替えの処理;
- echo "start: $left $center $right<br />\n";
- if ( $left > $center )
- {
- $temp = $center;
- $center = $left;
- $left = $temp;
- }
- echo "1st: $left $center $right<br />\n";
- if ( $center > $right )
- {
- $temp = $right;
- $right = $center;
- $center = $temp;
- }
- echo "2nd: $left $center $right<br />\n";
- if ( $left > $center )
- {
- $temp = $center;
- $center = $left;
- $left = $temp;
- }
- echo "3rd: $left $center $right<br />\n";
- ?>
- <p>左が < ?php echo $left; ?> で、真ん中が < ?php echo $center; ?> で、右が < ?php echo $right; ?> です。</p>
- </body>
- </html>
ループを使うのが普通ですが、ここはあえて使わない方向で挑んで見ました。長ったらしいコードになってしまっていますが、これはいわゆるバブルソートですね。隣同士を比較して入れ替えていくというやつです。N個の場合の比較回数は N(N-1)/2 で、3(3-1)/2 = 6/2 = 3。なので3回分の if を書いています。
TrackBack URI : http://blog.yoshitomo.org/archives/253/trackback
記事 URI : http://blog.yoshitomo.org/archives/253
注意 トラックバック先へのリンクを本文に含まない場合は、スパムとしてブロックされます。