关于php下合并排序的问题

lor*_*ier 1 php sorting algorithm

我一直在尝试在php下实现合并排序.但似乎不成功:(找不到错误的来源.非常感谢任何一种帮助!

function merge_sort(&$input, $start, $end) {
    if($start < $end) {
        $mid = (int) floor($start + $end / 2);
        merge_sort($input, $start, $mid);
        merge_sort($input, $mid + 1, $end);
        merge($input, $start, $mid, $end);
    } 
}

function merge(&$input, $p, $q, $r) { 
    $a = $q - $p + 1;
    $b = $r - $q;

    for($i = $p;$i <= $q;$i++) {
        $arr1[] = $input[$i];
    }

    for($i = $q+1;$i <= $r;$i++) {
        $arr2[] = $input[$i];
    }   

    $c = $d = 0;
    for($i = $p; $i <= $r; $i++) {
        $s = $arr1[$c];
        $t = $arr2[$d];

        if($a && (($s <= $t) || !$b)) { 
            $input[$i] = $s;
            $a--;$c++;
        } else if($b) {
            $input[$i] = $t;
            $b--;$d++;
        }
    } 
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这是信息xdebug扔回:

Fatal error: Maximum function nesting level of '100' reached, aborting! 
Run Code Online (Sandbox Code Playgroud)

Vic*_*let 8

要在合并排序上达到100的嵌套级别,您需要具有大小2^100(大约1e30)的输入数组,这是不可能的.我怀疑你的递归是不正确的.例如,你写的$start + $end / 2而不是($start + $end) / 2.