BLOG ENTRY

PHPでバブルソート(基本交換法、隣接交換法)のアルゴリズム

php
基本的なソートアルゴリズムのバブルソートのプログラムメモ。
「比較回数」は、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);

}
} elseif ($order == "DESC") {

if ($numArr[$j] < $numArr[$j+1] ) {

swap($numArr, $j, $j+1);

}
}
}
}
}

//ソート対象の配列
$numArr = array(92, 15, 26, 86, 105, 54, 29, 42, 75);

echo "ソート前";
echo "

“;
    print_r($numArr);
    echo “

";

//バブルソートを実行する。
bubbleSort($numArr, $order="ASC");

echo "ソート後";
echo "

";
    print_r($numArr);
    echo "

\n


\n";

[/PHP]

※昇順、降順の切り替えを含めました。

以上。

関連記事

  1. インドの教育レベルの高さとIT
  2. 今後のニュースがすごーく気になる某会社のお話

WRITE COMMENT


(required)


(required)


(required)

MENU