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

PHP函数快速排序的实现方法

发布时间:2023-07-03 23:51:49

快速排序是一种常用的排序算法,它的基本思想是通过一次遍历将待排序序列分割成两个子序列,一个序列中的元素都比另外一个序列中的元素小,然后对这两个子序列递归地进行排序,直到整个序列有序。

下面是PHP函数快速排序的实现方法:

function quickSort(&$arr, $low, $high) {
    if ($low < $high) {
        // 将数组划分为两个子数组,并返回划分点的索引
        $pivotIndex = partition($arr, $low, $high);
        // 递归对划分得到的两个子数组进行排序
        quickSort($arr, $low, $pivotIndex - 1);
        quickSort($arr, $pivotIndex + 1, $high);
    }
}

function partition(&$arr, $low, $high) {
    // 以数组的第一个元素作为划分点
    $pivot = $arr[$low];
    while ($low < $high) {
        // 从右向左找到第一个小于划分点的元素
        while ($low < $high && $arr[$high] >= $pivot) {
            $high--;
        }
        // 将小于划分点的元素放到左边
        $arr[$low] = $arr[$high];

        // 从左向右找到第一个大于划分点的元素
        while ($low < $high && $arr[$low] <= $pivot) {
            $low++;
        }
        // 将大于划分点的元素放到右边
        $arr[$high] = $arr[$low];
    }
    // 将划分点放到最终位置
    $arr[$low] = $pivot;
    // 返回划分点的索引
    return $low;
}

在上面的代码中,quickSort函数是快速排序的入口,partition函数用于将数组划分为两个子数组,并返回划分点的索引。通过不断地递归调用quickSort函数,可以对整个数组进行排序。

要使用该函数对一个数组进行排序,只需调用quickSort($arr, 0, count($arr) - 1);即可。

快速排序的时间复杂度为O(nlogn),是一种比较高效的排序算法。