PHPのソート・ノート - マージソート

マージソート

アレイは、それぞれ、左および右の部分に分割し、その後選別、最終的にマージされます

 パブリック 関数 _sort(&$ ARR左$$右){ 

        IF$左 < $右){
             // 正しい未満をすれば、丸め、中間値を削除します。再帰的プロセスを入力します。
            $ MID = フロア(($左 + $右)/ 2 ); 

            $この - > _ソート($ ARR$左$ MID );
             $この - > _ソート($ ARR$ MID + +1、$右)。
             この$ - > _マージ($ arrが$左$ MID$右); 
        } 
    } 

    パブリック 関数 _merge(&$ ARR左$$ MID$右){
         $ I = 左$ $ J = $ MID + +1 ;
         $ TMP = []; 

        // 両者の最小値は、一時的なアレイに配置され、取り出しました。ループのうち、クロスボーダーの場合。
        一方、$ I <= $ MID && $ J <= $右){
             IF$のARR [ $ I <ARR $ [ $ J ]){
                 $ TMP [] = $ ARR [ $ I ++ ]; 
            } {
                 $ TMP [] = $ ARR [ $ J ++ ]; 
            } 
        } 

        // 存在が残っているかどうかを決意は、あります残りの部分はtmpに残される全て入れ
        ながら$ Iは = < $ MIDを){
             $ TMP [] = $ ARR [ $ I ++ ]; 
        } 
        // 決意、権利が存在し、右側の残りの部分の全てが存在することになりますtmpが中に置かれ
        ながら、$ J <= $権利){
             $ TMP [] = $ ARR [ $ J ++ ]; 
        } 
        //は一時配列ARR $にデータをコピー
        するための$ K = 0、$ LEN = COUNT$ TMP); $ K < lenの$K $ ++ ){
             $のARR [ $左 + $ K ] = $ TMP [ $ K ]; 
        } 
       

    }

 

おすすめ

転載: www.cnblogs.com/liyante/p/11127441.html