PHP算法-归并排序_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP算法-归并排序

PHP算法-归并排序

 2017/9/1 8:08:48  erntoo  程序员俱乐部  我要评论(0)
  • 摘要:functionmerge_sort($arr){$count=count($arr);if($count<=1){return$arr;}$mid=floor($count/2);$left_arr=array_slice($arr,0,$mid);//递归分拆数组比较$right_arr=array_slice($arr,$mid);$left_arr=merge_sort($left_arr);$right_arr=merge_sort($right_arr)
  • 标签:PHP 算法
class="php" name="code">function merge_sort($arr)
{
    $count = count($arr);
    if ($count <= 1) {
        return $arr;
    }
    $mid = floor($count / 2);
    $left_arr = array_slice($arr, 0, $mid); // 递归分拆数组比较
    $right_arr = array_slice($arr, $mid);
    $left_arr = merge_sort($left_arr);
    $right_arr = merge_sort($right_arr);
    $arr = merge_arr($left_arr, $right_arr);
    return $arr;
}

/**
 * 比较两个 [顺序] 数组,并合并
 *
 * @param array $left_arr            
 * @param array $right_arr            
 */
function merge_arr($left_arr, $right_arr)
{
    $tmp_arr = [];
    // $i = 0;
    while (count($left_arr) && count($right_arr)) {
        // echo $i ++ . "\n"; //统计执行次数
        $tmp_arr[] = $left_arr[0] <= $right_arr[0] ? array_shift($left_arr) : array_shift($right_arr);
        print_r($tmp_arr);
    }
    return array_merge($tmp_arr, $left_arr, $right_arr);
}

?思想在于 1 不断分割数组到 最小 ?2 比较数组 ?排序 3 合并

发表评论
用户名: 匿名