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