117.info
人生若只如初见

用PHP编写递归排序算法:快速排序和归并排序

快速排序算法的PHP实现:

function quickSort($arr){
    $length = count($arr);
    
    if($length <= 1){
        return $arr;
    }
    
    $pivot = $arr[0];
    $left = [];
    $right = [];
    
    for($i=1; $i<$length; $i++){
        if($arr[$i] < $pivot){
            $left[] = $arr[$i];
        }else{
            $right[] = $arr[$i];
        }
    }
    
    return array_merge(quickSort($left), [$pivot], quickSort($right));
}

$arr = [3, 6, 8, 10, 1, 2, 1];
$sortedArr = quickSort($arr);

print_r($sortedArr);

归并排序算法的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]){
            array_push($result, array_shift($left));
        }else{
            array_push($result, array_shift($right));
        }
    }
    
    while(count($left) > 0){
        array_push($result, array_shift($left));
    }
    
    while(count($right) > 0){
        array_push($result, array_shift($right));
    }
    
    return $result;
}

$arr = [3, 6, 8, 10, 1, 2, 1];
$sortedArr = mergeSort($arr);

print_r($sortedArr);

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe083AzsIBgVeDFA.html

推荐文章

  • php生成json怎样处理大数据

    在PHP中生成JSON时,处理大数据需要考虑内存限制和执行时间限制。以下是一些建议来处理大数据: 分批处理:将大数据分成较小的批次,每次处理一批数据,然后将结...

  • php生成json如何优化速度

    为了优化 PHP 生成 JSON 的速度,您可以尝试以下方法: 使用 json_encode() 函数:这是 PHP 中用于将数组或对象转换为 JSON 格式的内置函数。它比手动构建 JSON ...

  • php生成json能加密吗

    PHP 生成的 JSON 数据本身不能直接加密,但您可以在将 JSON 数据发送给客户端之前对其进行加密。您可以使用各种加密算法(如 OpenSSL、AES 等)对 JSON 数据进行...

  • php生成json怎样保证准确

    要确保PHP生成的JSON数据的准确性,可以遵循以下几个步骤: 确保数据来源可靠:首先,确保你从数据库或其他数据源获取的数据是准确和完整的。 数据验证:在生成J...

  • 实现二叉树遍历的PHP递归函数

    下面是一个实现二叉树遍历的PHP递归函数,包括前序遍历、中序遍历和后序遍历:
    class Node { public $data; public $leftChild; public $rightChild; publi...

  • PHP中递归与迭代方法的性能比较

    在PHP中,递归和迭代都是用于解决相同问题的方法,但它们的性能可能会有所不同。一般来说,迭代通常比递归更有效率,因为递归调用会消耗更多的内存和处理时间。<...

  • 通过PHP递归函数实现数组扁平化

    以下是一个通过PHP递归函数实现数组扁平化的示例代码:
    function flattenArray($array) { $result = []; foreach ($array as $value) { if (is_array($valu...

  • PHP递归函数深度限制及其解决方案

    在PHP中,递归函数的深度是有限制的,这个限制是通过php.ini配置文件中的max_execution_depth参数设置的,默认值是256。当递归函数的深度超过这个限制时,PHP会抛...