多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 快速排序 通过将一个大的无序数组,随机取一个成员,比如第一个,作为二分点,将大的数组按成员与二分点的比较结果,分割成两个小的数组,然后对两个小的进行相同的处理,最终将数组切割成数组成员个数的有序数组,再将其全部按顺序合并,还原成原无序数组的有序状态 ``` <?php $a = array(2,13,42,34,56,23,67,365,87665,54,68,3); function quick_sort(array $a) { // 判断是否需要运行,因下面已拿出一个中间值,这里<=1 if (count($a) <= 1) { return $a; } $middle = $a[0]; // 取原序数组的第一个成员作为中间值 $left = array(); // 接收小于中间值 $right = array();// 接收大于中间值 $arr_len = count($a); // 循环比较 for ($i=1; $i < $arr_len; $i++) { if ($a[$i] > $middle) { // 大于中间值 $right[] = $a[$i]; } else { // 小于中间值 $left[] = $a[$i]; } } // 递归排序划分好的2边 $left = quick_sort($left); $right = quick_sort($right); // 合并排序后的数据,别忘了合并中间值 return array_merge($left, array($middle), $right); } print_r(quick_sort($a)); ```