Google Crisis Response(Google)
災害に関する情報源や、行方不明者情報の収集と検索を行う『パーソンファインダー』を初めとするツールの提供が行われています。

2007年3月6日 火曜日

PHP による並べ替え

Filed under: コンピューター,雑多
時間:1時58分
投稿者:よしとも
AddClips 経由でソーシャルブックマークに登録

 ひろまささんの連載記事『PHP で遊ぼう』の第6回は if と変数。この記事では並べ替え、いわゆるソートのアルゴリズムについて書かれています。

 ソートについて習ったのは大学のときです。サンプルコードは Pascal でした。懐かしさを感じるくらい前の話。3つの数字のソートプログラムを募集とのことでしたので、懐かしついでにやってみました。

  1. <html>
  2. <body>
  3. < ?php
  4.     $left = 8;
  5.     $center = 2;
  6.     $right = 4;
  7.  
  8.     // 並べ替えの処理;
  9.     echo "start: $left $center $right<br />\n";
  10.  
  11.     if ( $left > $center )
  12.     {
  13.         $temp = $center;
  14.         $center = $left;
  15.         $left = $temp;
  16.     }
  17.     echo "1st: $left $center $right<br />\n";
  18.  
  19.     if ( $center > $right )
  20.     {
  21.         $temp = $right;
  22.         $right = $center;
  23.         $center = $temp;
  24.     }
  25.     echo "2nd: $left $center $right<br />\n";
  26.  
  27.     if ( $left > $center )
  28.     {
  29.         $temp = $center;
  30.         $center = $left;
  31.         $left = $temp;
  32.     }
  33.     echo "3rd: $left $center $right<br />\n";
  34. ?>
  35. <p>左が < ?php echo $left; ?> で、真ん中が < ?php echo $center; ?> で、右が < ?php echo $right; ?> です。</p>
  36. </body>
  37. </html>

 ループを使うのが普通ですが、ここはあえて使わない方向で挑んで見ました。長ったらしいコードになってしまっていますが、これはいわゆるバブルソートですね。隣同士を比較して入れ替えていくというやつです。N個の場合の比較回数は N(N-1)/2 で、3(3-1)/2 = 6/2 = 3。なので3回分の if を書いています。

Comments (0)

HTML convert time: 0.115 sec. Powered by

Images is enhanced with WordPress Lightbox JS by Zeo