归并算法

《归并算法》

<?php

function al_merge($arrA,$arrB){

$arrC = array();

while(count($arrA)&&count($arrB)){

$arrC[]=$arrA[‘0’]<$arrB[‘0’]?array_shift($arrA):array_shift($arrB);

}

return array_merge($arrC,$arrA,$arrB);

}

function al_merge_sort($arr){

$len = count($arr);

if($len<=1)

return $arr;

$mid = intval($len/2);

$left_arr = array_slice($arr,0,$mid);

$right_arr = array_slice($arr,$mid);

$left_arr = al_merge_sort($left_arr);

$right_arr = al_merge_sort($right_arr);

$arr = al_merge($left_arr,$right_arr);

return $arr;

}

$arr=array(7,5,8,3,2,1,6,4);

echo ‘<pre/>’;

print_r(al_merge_sort($arr));

点赞