思路:有时间再整理把
function dividArr($arr)
{$size = count($arr);// 这一步很重要,否则可能死循环if ($size < 2) {return $arr;}$mid = floor($size / 2);$leftArr = array_slice($arr, 0, $mid);$rightArr = array_slice($arr, $mid);return merge(dividArr($leftArr), dividArr($rightArr));
}// merge 也适合合并两个有序数组
function merge($leftArr, $rightArr)
{var_dump($rightArr);$i = $j = $k = 0;$lSize = count($leftArr);$rSize = count($rightArr);$mergeArr = [];while ($i < $lSize && $j < $rSize) {$mergeArr[$k++] = $leftArr[$i] > $rightArr[$j] ? $rightArr[$j++] : $leftArr[$i++];}while ($i < $lSize) {$mergeArr[$k++] = $leftArr[$i++];}while ($j < $rSize) {$mergeArr[$k++] = $rightArr[$j++];}return $mergeArr;
}var_dump(dividArr([1,4,7,3,2]));