php实现快速排序(Quick Sort)

本文深入讲解了快速排序算法的基本原理,包括选取基准元素、分区操作以及递归排序过程。通过PHP实现代码,详细展示了如何将一个数列分为两部分,一部分的所有元素都比另一部分的元素小,并递归地对这两部分进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 从数列中挑出一个元素,称为 “基准”(pivot);
  • 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;
  • 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
<?php
function quicksort($arr){
    if(count($arr) < 2){
        return $arr;
    }
    $pivot = $arr[0];
    $less = [];
    $greater = [];
    for ($i = 1; $i < count($arr); $i++) {
        if ($arr[$i] < $pivot) {
            $less[] = $arr[$i];
        } else {
            $greater[] = $arr[$i];
        }
    }
    return array_merge(quicksort($less),[$pivot],quicksort($greater));
}
$test = quicksort([5,10,2,3,6,3,4]);
print_r($test);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值