排序算法__快速排序

 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  */
View Code
原文地址:https://www.cnblogs.com/hangtt/p/6427161.html