天天看点

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);