欢迎访问宙启技术站
智能推送

快速排序函数inPHP

发布时间:2023-10-04 18:23:23

快速排序是一种常用的排序算法,在PHP中实现快速排序函数可以使用递归的方式来实现。下面是一个使用PHP实现的快速排序函数:

function quickSort($arr) {
    // 如果数组元素个数小于等于1,则直接返回
    $length = count($arr);
    if ($length <= 1) {
        return $arr;
    }
    
    // 选择一个基准元素
    $pivot = $arr[0];
    
    // 初始化左右数组
    $left = array();
    $right = array();
    
    // 比基准元素小的放在左边,比基准元素大的放在右边
    for ($i = 1; $i < $length; $i++) {
        if ($arr[$i] < $pivot) {
            $left[] = $arr[$i];
        } else {
            $right[] = $arr[$i];
        }
    }
    
    // 递归地对左右数组进行快速排序
    $left = quickSort($left);
    $right = quickSort($right);
    
    // 合并左数组、基准元素和右数组
    return array_merge($left, array($pivot), $right);
}

上述代码中,我们首先判断需要排序的数组元素个数,如果小于等于1,则直接返回原数组。接着选择一个基准元素,并初始化左右数组。然后通过遍历数组,将比基准元素小的元素放入左数组,比基准元素大的元素放入右数组。再递归地对左右数组进行快速排序。最后通过合并左数组、基准元素和右数组,返回最终排序结果。

通过调用quickSort()函数,我们可以对任意数组进行快速排序,例如:

$arr = array(5, 2, 7, 1, 9, 3);
$result = quickSort($arr);
print_r($result);

运行上述代码,将输出Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 7 [5] => 9 ),表示对数组[5, 2, 7, 1, 9, 3]进行快速排序的结果为[1, 2, 3, 5, 7, 9]

快速排序的时间复杂度为O(nlogn),是一种高效的排序算法。它的核心思想是通过选取一个基准元素,将数组分为两个部分,左边的元素小于等于基准元素,右边的元素大于基准元素,然后递归地对左右两部分数组进行排序,最终将整个数组排序完成。