当前位置: 代码迷 >> 综合 >> PHP 归并排序和合并两个有序数组
  详细解决方案

PHP 归并排序和合并两个有序数组

热度:39   发布时间:2024-02-10 01:50:52.0

思路:有时间再整理把

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]));

 

  相关解决方案