1 <?php
2
3 $arr=array(1,43,54,62,21,66,32,78,36,76,39);
4
5 function quickSort($arr) {
6 //先判断是否需要继续进行
7 $length = count($arr);
8 if($length <= 1) {
9 return $arr;
10 }
11
12 //如果没有返回,说明数组内的元素个数 多余1个,需要排序
13 //选择一个标尺
14 //选择第一个元素
15 $base_num = $arr[0];
16
17 //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内
18 //初始化两个数组
19 $left_array = array();//小于标尺的
20 $right_array = array();//大于标尺的
21
22 for($i=1; $i<$length; $i++) {
23 if($base_num > $arr[$i]) {
24 //放入左边数组
25 $left_array[] = $arr[$i];
26 } else {
27 //放入右边
28 $right_array[] = $arr[$i];
29 }
30 }
31
32 //再分别对 左边 和 右边的数组进行相同的排序处理方式
33 //递归调用这个函数,并记录结果
34 $left_array = quickSort($left_array);
35 $right_array = quickSort($right_array);
36
37 //合并左边 标尺 右边
38 return array_merge($left_array, array($base_num), $right_array);
39 }
40
41 $arr = quickSort($arr);
42
43 echo "<pre>";
44 print_r($arr);
45
46
47
48
49 /*
50 Array
51 (
52 [0] => 1
53 [1] => 21
54 [2] => 32
55 [3] => 36
56 [4] => 39
57 [5] => 43
58 [6] => 54
59 [7] => 62
60 [8] => 66
61 [9] => 76
62 [10] => 78
63 )
64 */