単純なアルゴリズムのPHP

選択ソート

 道:その上の第二の第1ビットの比較のサイズを見つけるために、他の人の間で、その後二位、最小の番号を見つけるために、他のサイズの第1ビットの比較をしましょう、と

$ ARR = [2,45,12,67,33,5,23,132,46 ]。
以下のために$ I = 0; $ iが < $ arrが ;)$私は ++ ){
     のために$ jを = $ I +1; $ jの < $ arrが); $ jの ++ ){ 
         場合$をARR [ $ I ]> $のARR [ $のJ ]){
             $ TMP = $ ARR [ $ I ]。
            $ ARR [ $ I] = $ ARR [ $ jを];
            $ ARRの [の$ jを ] = $ TMP ; 
        } 
    } 
} 

ますprint_r$のARR)。

バブルソート

方法:位置とソート隣接する二つのデータの比較
車輪選別if_replace追加フィールドが完了したか否かを選別の背面を完了するために、継続しない場合は、決定:最適化を

$ ARR = [2,45,12,67,33,5,23,132,46 ]。
$のif_replace = ;
以下のために$ I = 0; $ iの < $のARRを); $ iの ++ ){
     のために$ jを = 0; $ jの < $のARR)-1; $ jの ++ ){
         場合$のARR [ $ J ]> $ ARRの [用$ jを +1 ]){
             $ TMP = $ ARR [ $ J];
            $ ARRの [ $ jを ] = $ ARR [ $ jを +1 ];
            $のARR [ $ jを +1] = $ TMP ;
            $ if_replaceは = ; 
        } 
    } 
    もし(!$のif_replace {)
         破ります
    } 
} 
ますprint_r$のARR)。

挿入ソート

方法は:順序付けられたシーケンスの構築は、ソートされていないデータのために、後ろから前にソートされた順序でスキャンし、インサートの対応する位置を見つけるために、

$ ARR = [2,45,12,67,33,5,23,132,46 ]。
$ I ; = 0 $ iが < カウント$ ARR ;)-1 $ iが ++ ){ 
     ため$ J = $ I +1; $ jを 0> $ J - {)
         であれば$ ARR [ $ jの < $ ARR [ $ J -1 ]){
             $ TMP = $ ARR [ $のJ ]。
            $ ARRの [の$ jを ] = $ ARR [$ jを -1 ];
            $ ARRの [の$ jを -1] = $ TMP ; 
        } {
             破ります
        } 
    } 
} 

ますprint_r$のARR)。

ヒルソート
方法:セットは、配列の要素をソートしなければならないn個の要素は、最初に、全体増分サブシーケンスにスペーサ要素として整数インクリメント(nより小さい)かかり
   それぞれ、同じサブシーケンスの増分からのすべての要素をサブ直接挿入ソート実装されています。
   そして、狭い間隔の増分、分割を繰り返し、作業シーケンスをランク付けします。最後の増分= 1まで考慮すると、同じサブシーケンス内のすべての要素がこれまでに注文しました。

 

$ ARR = [2,45,12,67,33,5,23,132,46 ]。
$増分 = カウント数$のARR )。
やる{ 

    $増分 = $増分は / 3)+1 ; 

    以下のために$ I = 0; $ iは < $増分を$ iは ++ ){ 
         $ K = 0 $ J = $ I ;
        実行{ 

            ためM $ = $ J +の$増分 ; $ M > 0; $ Mを- = $インクリメント){ 
                 場合$ ARR [ $ M - $インクリメント ]> $ ARR [ $ M ] && $ ARR [ $ M ]){
                     $ TMP = $ ARR [ $のM ]。
                    $のARR [ $のM ] = $ ARR [ $ M - $増分]。
                    $ ARR [ $ M - $インクリメント ] = $ TMP 
                } {
                    破ります; 
                } 
            } 

            $ K ++ ;
            $ jを = $ I +($ kは *の$増分)。
        } $ jの < $のARR )); 

    } 

} ながら$増分 > 1 )。
しますprint_r$ arrの);

 

  クイックソート

:それの右側にフルカウントより大きく、それは、その左側に全体の数以下であるので、各部の動作をわずか数まで、参照番号として数字の列の開始番号を削除

$ ARR = [33、24、8、21、2、23、3、32、16 ]。
機能クイックソート($ ARR 
{ 
    $カウント = カウント数$のARR )。

    もし$数 <2 ){
         リターン の$ arrが
    } 

    $ leftArray = $ rightArray = 配列();
    $中央 = $ ARR [0]。// 基准值

    $ I = 1; 私は$ < $カウント ; 私は$ ++ ){
         //左側に格納された基準値よりも、右側に記憶された基準値より大きい
        IF$ ARR [ $ I < $ミドル){
             $ leftArray [] = $ ARR [ $ I ]; 
        } {
             $ rightArray [] = $ ARR [ $ I ]; 
        } 
    } 

    $ leftArray =クイック($ leftArray );
     $ rightArray =クイック($ rightArray ); 

    戻り array_merge$ leftArrayアレイ$真ん中$ rightArray )。
} 

ますprint_r(クイック($のARR))。

 

おすすめ

転載: www.cnblogs.com/yx520zhao/p/11511562.html