/**
* @author beggar [email protected]
* @param type $arr
* @param type $begin
* @param type $end
*/
function mergeSort(&$arr, $begin, $end){
if(!empty($arr) && $begin < $end){
$middle = (int)(($begin + $end)/2);
mergeSort($arr, $begin, $middle);
mergeSort($arr, $middle+1, $end);
merge($arr, $begin, $middle, $end);
}
}
function merge(&$arr, $begin, $middle, $end){
$left = array();
$right = array();
for($i=$begin; $i<=$middle; $i++){
$left[] = $arr[$i];
}
for($j=$middle+1; $j<=$end; $j++){
$right[] = $arr[$j];
}
$left[] = 99999999;
$right[] = 99999999;
$i = 0;
$j = 0;
for($k=$begin; $k<=$end; $k++){
if($left[$i] > $right[$j]){
$arr[$k] = $right[$j];
$j++;
}else{
$arr[$k] = $left[$i];
$i++;
}
}
}
$arr = array(7, 8, 1, 4, 5, 9, 6);
mergeSort($arr, 0, 6);
print_r($arr);
PHP排序之歸併排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.