PHP中的归并排序算法可以使用以下代码实现:
function mergeSort($arr) {
$length = count($arr);
if ($length <= 1) {
return $arr;
}
$mid = (int)($length / 2);
$left = array_slice($arr, 0, $mid);
$right = array_slice($arr, $mid);
$left = mergeSort($left);
$right = mergeSort($right);
return merge($left, $right);
}
function merge($left, $right) {
$result = [];
while (count($left) > 0 && count($right) > 0) {
if ($left[0] <= $right[0]) {
$result[] = array_shift($left);
} else {
$result[] = array_shift($right);
}
}
while (count($left) > 0) {
$result[] = array_shift($left);
}
while (count($right) > 0) {
$result[] = array_shift($right);
}
return $result;
}
// 示例用法
$arr = [5, 3, 8, 6, 2, 7, 1, 4];
$sortedArr = mergeSort($arr);
print_r($sortedArr);
以上代码定义了两个函数,mergeSort
用于对数组进行归并排序,merge
用于合并两个已排序的数组。在mergeSort
函数中,首先判断数组的长度是否小于等于1,如果是,则直接返回该数组。否则,将数组分成两个部分,分别对左半部分和右半部分进行递归调用mergeSort
函数。最后,将左半部分和右半部分的结果传递给merge
函数进行合并,并返回合并后的结果。
使用示例中的输入数组[5, 3, 8, 6, 2, 7, 1, 4]
,输出结果为[1, 2, 3, 4, 5, 6, 7, 8]
。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站