Windows system >> Windowsの知識 >  >> コンピュータソフトウェアのチュートリアル >> コンピュータソフトウェアのチュートリアルについて >> PHPの4つの一般的な基本的なソートアルゴリズム(例付き)

PHPの4つの一般的な基本的なソートアルゴリズム(例付き)

  
1.バブルソート分析:ソートされる一連の数字の中で、まだスケジュールされていないシーケンスについては、2つの隣接する数字が見出しから順に続きます。比較して調整し、大きい数字を沈め、小さい数字を沈めます。つまり、2つの隣接する数字が比較され、それらの順序付け要件とソート要件が逆になっていることが判明すると、それらは交換されます。コードの実装:$ arr = array(1,43,54,62,21,66,32,78,36,76,39); function bubbleSort($ arr){$ len = count($ arr); //レイヤループ制御では、($ i = 1; $ i< $ len; $ i ++)のバブリングのラウンド数が必要です。////このレイヤループは、各ラウンドの比較が必要な回数($ k = 0)を制御するために使用します。; $ k< $ len- $ i; $ k ++){if($ arr [$ k]> $ arr [$ k + 1]){$ tmp = $ arr [$ k + 1]; $ arr [$ k + 1] = $ arr [$ k]; $ arr [$ k] = $ tmp;}}} return $ arr;} 2.ソートコードの実装を選択します:function selectSort($ arr){//ダブルループ補完、外側の制御ラウンド数、内側の制御比較カウント$ len = count($ arr); for($ i = 0; $ i< $ len-1; $ i ++){//最初に最小値$ pの位置を仮定する= $ i;($ j = $ i + 1; $ j< $ len; $ j ++){//$ arr [$ p]は、($ arr [$ p]> $の場合、現在知られている最小値です。 Arr [$ j]){//比較し、より小さく見つけ、最小値の位置を記録し、次の比較での比較に既知の最小値を使用します。 $ p = $ j;}} //現在の最小値の位置が決定され、$ pに保存されました。最小値の位置が現在想定されている位置$ iと異なることが判明した場合、位置を交換することができます。 ($ p!= $ i){$ tmp = $ arr [$ p]; $ arr [$ p] = $ arr [$ i]; $ arr [$ i] = $ tmp;}} //最後に戻る結果の並べ替え分析の挿入:並べ替える数字のセットで、前の数字がすでに正しい順番になっていると仮定して、n番目の数字を前の順番の数字に挿入すると、次のようになります。 n個の数字も順番に並んでいます。このサイクルは、すべてが順調になるまで繰り返されます。コードの実装:関数insertSort($ arr){$ len = count($ arr);($ i = 1、$ i< $ len; $ i ++)の場合{$ tmp = $ arr [$ i]; //内部レイヤループ制御、($ j = $ i-1; $ j> = 0; $ j--){if($ tmp< $ arr [$ j]){//の比較と挿入位置を入れ替えます。後ろの要素を前の要素と入れ替えます$ arr [$ j + 1] = $ arr [$ j]; $ arr [$ j] = $ tmp;} else {//必要ない場合移動する要素は、既に並べ替えられているので配列なので、前の要素をもう一度比較する必要はありません。 Break;}}} return $ arr;} 4.クイックソート分析:データム要素、通常は最初の要素または最後の要素を選択します。スキャンによって、ソートされるシーケンスは2つの部分に分割されます。1つの部分は参照要素より小さく、1つの部分は参照要素以上です。この時点で、参照要素はソートされた後に正しい位置にあり、その後、除算の2つの部分は同じ方法で再帰的にソートされます。コード実装:function quickSort($ arr){//最初に$ length = count($ arr)を続ける必要があるかどうかを判断; if($ length< = 1){return $ arr;} //最初の要素をBaseline $ base_num = $ arr [0]; //定規を除くすべての要素を調べて、サイズに従って2つの配列に配置します//2つの配列を初期化します$ left_array = array(); //baseより小さい$ right_array = Array(); //forの基数よりも大きい($ i = 1; $ i< $ length; $ i ++){if($ base_num> $ arr [$ i]){//左の配列を置く$ left_array [] = $ arr [$ i];} else {//右側に$ right_array [] = $ arr [$ i];}} //を配置してから、左右の配列に対してこの関数を再帰的に呼び出します。 $ left_array = quick_sort($ left_array); $ right_array = quick_sort($ right_array); //return return array_merge($ left_array、array($ base_num)、$ right_array);}この記事は[System Home] www.xp85からのものです。コム
Copyright © Windowsの知識 All Rights Reserved