ホームページ >バックエンド開発 >PHPチュートリアル >PHP の 4 つの基本的な並べ替えアルゴリズムの例

PHP の 4 つの基本的な並べ替えアルゴリズムの例

WBOY
WBOYオリジナル
2016-08-08 09:29:461297ブラウズ

概要: PHP の 4 つの基本的な並べ替えアルゴリズムには、バブル ソート、クイック ソート、選択ソート、および挿入ソートが含まれます。

1. バブルソート

アイデア分析: ソートされる一連の数値のうち、まだソートされていない順序について、前から後ろに向かって順番に 2 つの隣接する数値を比較して調整します。大きい数字は沈み、小さい数字は上がります。つまり、2 つの隣接する数値が比較され、それらの順序が順序要件と逆であることが判明するたびに、それらは交換されます。
コードの実装:
$arr=array(1,43,54,62,21,66,32,78,36,76,39);
function bubbleSort($arr)
{
$len= count($arr);
//このループ層は、バブルする必要があるラウンド数を制御します
for($i=1;$i { //このループ層は次の目的で使用されます。バブリングの各ラウンドを制御する 数値を比較する必要がある回数
for ($k=0;$k
$tmp=$arr[$k+1]; return $ arr;
}


2. 選択ソート




コード実装:

function selectSort($arr) {//二重ループが完了、外側の層はラウンド数を制御し、内側の層はラウンド数を制御します比較数$ len = count($ arr); {

{、 // 比較し、小さい方を見つけて最小値の位置を記録し、次の比較で既知の最小値を使用します。

最小値の位置が現在仮定されている位置$iと異なることが判明した場合には、位置を入れ替えることができる。 ! If ($ p! = $ I) { $ tMP = $ arr [$ p]; $ arr [$ i] = $ tmp; } // 最終結果を返します return $ arr;
}


3. 並べ替えを挿入します


思考分析: 並べ替えのセットで、これらの n 番目の数値も含まれるように、前の順序の数値に n 番目の数値を挿入します。注文。すべてが整うまでこのサイクルを繰り返します。

コードの実装:
function insertSort($arr) {
$len=count($arr);
for($i=1, $i<$len; $i++) {
$tmp = $arr [$ i]; 内部 // 内部循環制御、比較して
for ($ j = $ i-1; $ j & gt; = 0; $ j-) {
if ($ tmp & lt; j]) {
] = $ Tmp;
} else {
// 移動する必要のない要素が見つかった場合、その要素はすでに配列としてソートされているため、前の要素を再度比較する必要はありません。
最初の要素または最後の要素。 1 回のスキャンで、ソート対象の列が 2 つの部分に分割され、1 つの部分は参照要素より小さく、もう 1 つの部分は参照要素以上になります。このとき、ベース要素はソート後の正しい位置にあり、分割された 2 つの部分も同様に再帰的にソートされます。



コードの実装:


function QuickSort($arr) {
//まず続行する必要があるかどうかを決定します

$length = count($arr);

if($length <= 1) { return $ arr; }

//最初の要素をベースとして選択します

$base_num = $arr[0];

//ルーラーを除くすべての要素をスキャンし、サイズ関係に従って 2 つの配列に入れます

//2 つを初期化します配列 $left_array = array(); // 基数 より小さい $right_array = array(); // 基数 より大きい for ($i=1; $i if( $base_num > $right_array[] = $arr[$ i];
/マージ
return array_merge($left_array, array($base_num), $right_array);
}

参照:

http://www. evget.com/article/2015/2/11/22149.html


http://www.evget.com/product/2605



上記では、PHP の 4 つの基本的な並べ替えアルゴリズムの例を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。