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教程有兴趣的朋友有所帮助。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答