【排序算法】PHP快速排序源码

之前波波的笔记中已经有了用PHP写的冒泡排序,今天又到了一周一度的周六,然后就分享一个PHP快速排序的源码吧。

快速排序是由东尼·霍尔所发展的一种排序算法。其基本思想是基本思想是,通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。

快速排序原理图:

PHP快速排序源码

PHP快速排序源码:

  1. /**
  2.  * QuickSort
  3.  *
  4.  * @param array $container
  5.  * @return array
  6.  */
  7. function QuickSort(array $container)
  8. {
  9.     $count = count($container);
  10.     if ($count <= 1) { // 基线条件为空或者只包含一个元素,只需要原样返回数组
  11.         return $container;
  12.     }
  13.     $pivot = $container[0]; // 基准值 pivot
  14.     $left  = $right = [];
  15.     for ($i = 1; $i < $count$i++) {
  16.         if ($container[$i] < $pivot) {
  17.             $left[] = $container[$i];
  18.         } else {
  19.             $right[] = $container[$i];
  20.         }
  21.     }
  22.     $left  = QuickSort($left);
  23.     $right = QuickSort($right);
  24.     return array_merge($left, [$container[0]], $right);
  25. }

本文参考了博客https://blog.csdn.net/sgn132/article/details/47279511,下一篇为大家分享PHP版的希尔排序,需要的朋友可以留意。

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!