PHP实现:二分归并排序
2017-01-04 本文已影响0人
JennyGump
# 分
function slice($arr)
{
if (sizeof($arr) <= 1) {
return $arr;
}
$mid = intval(sizeof($arr) / 2);
$left = array_slice($arr, 0, $mid);
$right= array_slice($arr, $mid);
$larr = slice($left);
$rarr = slice($right);
$merge = merge($larr , $rarr);
show_array($merge);
return $merge;
}
#归并
function merge($arr_left , $arr_right){
$min = [];
while(sizeof($arr_left) && sizeof($arr_right)){
$min[] = $arr_left[0] < $arr_right[0] ?
array_shift($arr_left) : array_shift($arr_right);
}
$arr = [];
if(sizeof($min) > 0){
if (sizeof($arr_left) >0 ) {
$arr += array_merge($min , $arr_left);
}
if (sizeof($arr_right) >0 ) {
$arr += array_merge($min , $arr_right);
}
}
return $arr;
}