[アルゴリズム] バブルソート(PHP編)

バブルソート第2回はCGI業界で何故か嫌われ者のPHPで書いてみたいと思います。
何故PHPが嫌われているかというと、RubyとPythonを書きたい人が増えてきたから・・・と聞きましたが、真実はいかに??
前回のおさらい
バブルソートの概要は前回記事を読んで貰うとして、ちゃんとした説明を読みたい人はwikipediaのリンクを載せておきます。
https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3%83%88
wikipediaの中でPHPのコードも書かれていますが、もう少し簡単にか書けそうなので別物を書きたいと思います。
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php function getBubbleSort($arr){ //入れ替えが無くなるまで繰り返す while(true){ // 上位から順に2つの数値を比較して、小さい数値を左、大きい数値を右にしていく $flg=0; for($i=0; $i<count($arr)-1; $i++){ $num1 = $arr[$i]; $num2 = $arr[$i+1]; if($num1 > $num2){ $arr[$i] = $num2; $arr[$i+1] = $num1; $flg++; } } if($flg===0){break;} } return $arr; } // ランダムな数値の配列 $arr = array(2,12,7,16,8,13); // 関数の実行 $res = getBubbleSort($arr); echo join(" < ",$res); |
環境
今回の環境構築は下記で構築しておきました。
1. VurtualBox + Vagrant
2. Ubuntu15
3. nginx
4. PHP5.4
ブラウザでbubble_sort.phpにアクセスすると、答えが出るようにしてます。
解説
基本構造はJavascriptと同じなのだが、今回は関数にしておいたのは、汎用的に使えるようにしないとタダのゴミプログラムになってしまうからである。
それにしても、PHPとjavascriptって変数の$付け以外はほぼ同じなので、WEBプログラムを行う際に移行作業やコーディングトラブルが起きにくいから、このセットが人気があるのではないかと考えられる。
でもたまに(今回もだが)PHP使っている時に「ver a=0;」としてエラーになったり。、
変数に「$」を付け忘れたりするので、こういうことを確認んする癖をつければ向かう所敵なしだろう!!!
初心者の人達、頑張れ!!