PHP常用排序方法---快速排序

 /*

 * 快速排序法

 * */

 public function quick_sort2($arr) {

     $length = count($arr);

     //先判断是否需要继续进行 递归出口:数组长度为1,直接返回数组

     if(!is_array($arr)||$length <= 1) {return $arr;}

     //选择第一个元素作为基准

     $baseValue = $arr[0];

     //遍历除了标尺外的所有元素,按照大小关系放入两个数组内

     //初始化两个数组

     $leftArr = array();  //小于基准的

     $rightArr = array();  //大于基准的

     //使用for循环进行遍历,把选定的基准当做比较的对象

     for($i = 1; $i<$length; $i++) {

         if( $arr[$i] < $baseValue) {

             //放入左边数组

             $leftArr[] = $arr[$i];

         } else {

             //放入右边数组

             $rightArr[] = $arr[$i];

         }

     }

     //再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数

     $leftArr = $this->quick_sort2($leftArr);

     $rightArr = $this->quick_sort2($rightArr);

     //合并 左边 标尺 右边, 注意:array($baseValue),关联着重复数据

     return array_merge($leftArr, array($baseValue), $rightArr);

 }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值