ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルで配列をソートする 3 つの方法を共有する

PHP_PHP チュートリアルで配列をソートする 3 つの方法を共有する

WBOY
リリース: 2016-07-21 15:18:27
オリジナル
856 人が閲覧しました

1. バブルソート方法
手順: 最大の数値を見つけて、最後まで並べて検索を続けます

例:

コードをコピー コードは次のとおりです:

$arr = 配列(3,5 ,-1,0,2);
for($i=0;$ifor($j=0;$jif($arr[$j]>$arr[$j+1]){
$temp = $arr[$j]; $j]=$arr [$j+1];
$arr[$j+1]=$temp
}
}
}

理解:
3、5、-1、0、2
/ /最初の数値から逆に比較し、次の数値より大きい場合は次の数値で位置を調整します
//1回目は3が5未満なのでそのままです
//2回目は5が -1 より大きい場合、
3、-1、5、0、2 になります
//3 回目、5 は 0 より大きくなります
3、-1、0、5、2
//4 回目、 5 は 2 より大きいです
3, -1, 0, 2, 5
これで内側のループが完了します。この時点で、最後の数値はソートされ、次回は参加しません。 2 番目の外側のループが始まります。 1 回目: 3 は -1 より大きい
-1, 3 , 0, 2, 5
2 回目: 3 は 0 より大きい
-1, 0, 3, 2, 5
3 回目: 3 は 2 より大きいです
-1, 0, 2, 3, 5
これで次の 2 桁が完成しました 数値が並べ替えられ、類推により
-1, 0, 2, 3, 5

2. 選択ソート方法
説明: 最初の数値が最小の数値であると仮定し、その後、次の数値を順番に比較し、仮定された数値が最小の数値でない場合は、次の最小の数値と交換します

コードをコピーします コードは次のとおりです:
$arr=array(2,1,-1,3,0 );
for($i=0;$i$minval = $arr[$i];
$minindex = $i;
for($j=1 +$i;$jif ($arr[$j]<$minval){
$minval = $arr[$j];
}
}
$temp = $arr[$i]; $i] = $arr[$minindex];
$arr[$minindex] = $temp;
}


理解:
2 , 1, -1, 3, 0
//最初の数値 2 は最小値、その後の数値が順番に 2 と比較され、最小の数値が見つかります
プロセス:
1 が 2 より小さい場合、minval= 1
-1 が 1 より小さい場合、minval=-1
3 が大きい-1 より大きく、変化なし
0 は、-1 より大きく、変化なし
次に、配列内の最小の数値、-1 を見つけました
-1 と 2 を結合します 位置を変更することで、最初の数値のソートが完了します
その後、配列は
-1, 1, 2, 3, 0 になります
最初の数値 -1 はすでに順序が決まっているため、比較には参加せず、後ろから続行します
次に minval=1 と仮定します
2 は 1 より大きく、変更されません
3 は 1 より大きく、変更されません
0 が 1 より小さい場合、minval=0
これで 1 サイクルが完了し、0 と 1 の位置を交換して 2 番目の数値の並べ替えを完了します
その後これで配列は
-1, 0, 2, 3, 1 になります
//以降の推論方法は上記と同じです。 。 。


3. 挿入ソート方法


説明: まず、配列内の最初の数値が別個の順序付けられた配列であると仮定し、次に次の数値をそれと結合します [ここで、I が増加すると、それはそれらになります]次の数値が想定されている数値より小さい場合、小さい数値を後ろに移動し、最後にその数値を前に移動します

コードをコピーします
コードは次のとおりです: $arr= array(2,1, -1,3,0); for($i=1;$i$insertindex = $i-1; while($insertindex>=0 && $insertval$arr[$insertindex+1]=$arr[$insertindex]
}
$temp = $arr [$i];
$arr[$insertindex+1]=$insertval
}
理解:
2, 1, -1, 3, 0
//初めて、挿入する数値 1 を insertval として保存し、insertval を 2 と比較します。1 は 2 より小さいため、2 を元の値に戻します。下の図のように
2, 2, -1, 3, 0
//このとき、2の前に数字はなく、insertindex=0なので比較は完了し、insertvalを位置を見つけました。以下のようになります
1, 2, -1, 3, 0
//このとき、1, 2 は順序付き配列になります
//2回目はまず挿入する数値-1をinsertvalとして保存し、そして insertval を取得します 2 と比較すると、-1 は 2 より小さいので、2 を後ろに移動して以下のようになります
1, 2, 2, 3, 0
//このとき、insertval と 1 を比較すると、-1 の方が小さい1 よりも -1 戻すと次の図になります (挿入する数値と前の順序配列を比較する処理です)
1, 1, 2, 3, 0
//このとき、insertindexが終わったので、insertval で位置
-1, 1, 2, 3, 0 を挿入します
//その後のプッシュ方法は上記の通りです

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325490.html技術記事 1. バブル ソート方法の説明: 最大の数値を見つけて最後まで並べて、例を探します。次のようにコードをコピーします。 $arr = array(3,5,-1,0,2); ($i= 0;$icount($arr)-1;$i++){...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート