PHP 快速排序法

 1 <?php
 2 function quickSort($arr) {
 3     //先判断是否需要继续进行
 4     $length = count($arr);
 5     if ($length <= 1) {
 6         return $arr;
 7     }
 8     //如果没有返回,说明数组内的元素个数 多余1个,需要排序
 9     //选择一个标尺
10     //选择第一个元素
11     $base_num = $arr[0];
12     //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
13     //初始化两个数组
14     $left_array = array();//小于标尺的
15     $right_array = array();//大于标尺的
16     for ($i = 1; $i < $length; $i++) {
17         if ($base_num > $arr[$i]) {
18             //放入左边数组
19             $left_array[] = $arr[$i];
20         } else {
21             //放入右边数组
22             $right_array[] = $arr[$i];
23         }
24     }
25     //再分别对 左边 和 右边的数组进行相同的排序处理方式
26     //递归调用这个函数,并记录结果
27     $left_array = quickSort($left_array);
28     $right_array = quickSort($right_array);
29     
30     //合并左边 标尺 右边
31     return array_merge($left_array, array($base_num), $right_array);
32 }
33 $arr = array(88, 1, 2, 5, 4, 3, 66, 0);
34 $res = quickSort($arr);
35 print_r($res);

 

转载于:https://www.cnblogs.com/cloudshadow/p/5280379.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值