之前波波的笔记中已经有了用PHP写的冒泡排序,今天又到了一周一度的周六,然后就分享一个PHP快速排序的源码吧。
快速排序是由东尼·霍尔所发展的一种排序算法。其基本思想是基本思想是,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
快速排序原理图:
PHP快速排序源码:
- /**
- * QuickSort
- *
- * @param array $container
- * @return array
- */
- function QuickSort(array $container)
- {
- $count = count($container);
- if ($count <= 1) { // 基线条件为空或者只包含一个元素,只需要原样返回数组
- return $container;
- }
- $pivot = $container[0]; // 基准值 pivot
- $left = $right = [];
- for ($i = 1; $i < $count; $i++) {
- if ($container[$i] < $pivot) {
- $left[] = $container[$i];
- } else {
- $right[] = $container[$i];
- }
- }
- $left = QuickSort($left);
- $right = QuickSort($right);
- return array_merge($left, [$container[0]], $right);
- }
本文参考了博客https://blog.csdn.net/sgn132/article/details/47279511,下一篇为大家分享PHP版的希尔排序,需要的朋友可以留意。