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 */