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

candy-corn-1739404_1280
LINEで送る
Share on GREE
Share on LinkedIn

PHPのバケットソートは、Javascriptをそのままローカライズしたのではなく、少しだけ変更してある。
具体的には解説を読んでもらいたいが、配列定義や、その後の扱いなど、今まであまり気にしたことが無かった事象を発見した。
言語毎にこうした実行したときの挙動は違ってくるとは思うのだが、長年使っている言語でも、こうした事を今まで気がついていなかったことにビックリ!!
改めてこうしたプログラミングを地道に行うことと、ユニットテストを行うことの重要性を感じた。

ソース

実行

解説

max値の取得

PHP言語では、配列に値を入れないと、key値で埋めてくれない為、今回はランダム値に5が数字として入っていない場合、仮登録する配列の5番目が登録されない状態となる。
この場合、どういう不具合が発生するかというと、
arr[1]
arr[2]
arr[3]
arr[4]
arr[6]
これをcountしてみると、
count(arr)
> 5
となる。
したがって、仮登録をfor文のインクリメントで実行した場合、loopが5回しか実行されず、6が処理されなくな事象があった。
これを回避するために、max値を取得して、for文につなげている。

関連リンク

kiwipedia

マージソート記事

解説
Javascript
PHP

アルゴリズム過去記事

http://wordpress.ideacompo.com/?cat=562&tag=Algorithm

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*