1$arr = [9, 43, 12, 0, 87, 1]; 2function merge_sort(&$arr){ 3 _merge_sort($arr, $arr, 0, count($arr) - 1); 4} 5 6function _merge_sort(&$s_arr, &$d_arr, $i, $j){ 7if($i > $j){ 8return; 9 }10if($i == $j){11echo 'aa';12$d_arr[$i] = $s_arr[$i];13returnfalse;14 }15$tmp_arr = array();16$m = intval(($i + $j)/2);17echo$m;18if($i <= $m){19 _merge_sort($s_arr, $tmp_arr, $i, $m);20 }21if($m+1 <= $j ){22 _merge_sort($s_arr, $tmp_arr, $m+1, $j);23 }24 merge($tmp_arr, $d_arr, $i, $m, $j);25}26 //$s_arr中的$start到$m與$m到$end兩個序列都是有序的,將這兩個序列合并到$d_arr里面27function merge(&$s_arr, &$d_arr, $start, $m, $end){28$i = $start; $j = $m+1;$d_i = $i;29while($i <= $m && $j <= $end){30if($s_arr[$i] > $s_arr[$j]){31$d_arr[$d_i++] = $s_arr[$i++];32//$i++;33 }else{34$d_arr[$d_i++] = $s_arr[$j++];35 }36 }37while($i <= $m){38$d_arr[$d_i++] = $s_arr[$i++];39//$i++;40 }41while ($j <= $end) {42$d_arr[$d_i++] = $s_arr[$j++];43 }44 }
以上就介紹了php實現二路歸并排序,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答