
基本的なソートアルゴリズムのバブルソートのプログラムメモ。
「比較回数」は、n(n-1)/2回。交換回数は、元のデータ列によって異なるが、一回のスキャンで平均n/2回なので、全体では平均n(n-1)/4回。
・・・らしいです。
[PHP]
//要素を入れ替える関数
function swap(&$v, $i, $j) {
$temp = $v[$i];
$v[$i] = $v[$j];
$v[$j] = $temp;
}
/*
* バブルソートを行う関数
* $numArr = ソートする配列
* $order = ソートの昇順(ASC)・降順(DESC) デフォルトは昇順
*/
function bubbleSort(&$numArr, $order="ASC") {
//要素数が1以下であれば
//ソートをする必要がないので処理を終了する。
if (count($numArr) <= 1) {
return;
}
for ($i=0; $i for ($j=0; $j if($order == "ASC") { if ($numArr[$j] < $numArr[$j-1] ) { swap($numArr, $j, $j-1); } if ($numArr[$j] < $numArr[$j+1] ) { swap($numArr, $j, $j+1); } //ソート対象の配列 echo "ソート前"; "; //バブルソートを実行する。 echo "ソート後"; \n [/PHP] ※昇順、降順の切り替えを含めました。 以上。
} elseif ($order == "DESC") {
}
}
}
}
$numArr = array(92, 15, 26, 86, 105, 54, 29, 42, 75);
echo "
“;
print_r($numArr);
echo “
bubbleSort($numArr, $order="ASC");
echo "
";
print_r($numArr);
echo "
\n";関連記事