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);
时间: 2024-09-30 09:03:16