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),是一种比较高效的排序算法。
