摘要:导语这篇了解下快速排序。事实上,快速排序通常明显比其他算法更快,因为它的内部循环可以在大部分的架构上很有效率地达成。动图演示实例基准值小于基准值,存入左边大于基准值,存入右边倒序参考资料快速排序快速排序算法演示排序算法。
导语
这篇了解下快速排序。
快速排序快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。在平均状况下,排序 n 个项目要 O(n log n) 次比较。在最坏状况下则需要 O(n2) 次比较,但这种状况并不常见。事实上,快速排序 O(n log n) 通常明显比其他算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地达成。
步骤为:
从数列中挑出一个元素,称为"基准"(pivot),
重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归到最底部时,数列的大小是零或一,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
维基百科中的介绍。核心的思想是使用递归,下面的动图很形象。
动图演示 实例2 [1] => 3 [2] => 8 [3] => 16 [4] => 21 [5] => 23 [6] => 24 [7] => 32 [8] => 33 )
参考资料:快速排序、PHP 快速排序算法、GIF演示排序算法。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30024.html
摘要:概述快速排序最初由东尼霍尔提出,是一种平均时间复杂度为,最差时间复杂度为的排序算法。测试算法效率与复杂度完全随机序列排序结果以下面的方法分别生成元素个数为万万的完全随机数组,并用快速排序算法对其排序。 概述 快速排序(QuickSort)最初由东尼·霍尔提出,是一种平均时间复杂度为showImg(https://segmentfault.com/img/bV5sdO?w=61&h=17...
摘要:概念这里借用百度百科的一张图来,非常形象快速排序算法是对冒泡算法的一个优化。获取已经打乱了顺序的数组快速排序这里引用的是我之前写的冒泡算法排序冒泡运行结果 概念 这里借用百度百科的一张图来,非常形象:showImg(https://segmentfault.com/img/bVdlR6); 快速排序算法是对冒泡算法的一个优化。他的思想是先对数组进行分割, 把大的元素数值放到一个临时数...
摘要:算法原理下列动图来自五分钟学算法,演示了快速排序算法的原理和步骤。因此,快速排序的遍历次数最少是次。为什么最多是次这个应该非常简单,还是将快速排序看作一棵二叉树,它的深度最大是。 算法原理 下列动图来自@五分钟学算法,演示了快速排序算法的原理和步骤。 showImg(https://shockerli.net/media/15540242976690/quick.gif); 步骤: ...
摘要:排序严格来说不算数据结构,更应该归于算法一类,因为数据结构指的是数据与数据之间的关系,排序参与其中,更多的是让数据状态发生了改变。 排序严格来说不算数据结构,更应该归于算法一类,因为数据结构指的是数据与数据之间的关系,排序参与其中,更多的是让数据状态发生了改变。于是,我们开始用PHP来聊聊算法。 引子 其实有一句话说的是不错的,不必重复造轮子,所以下面我将引用别人的文章作为本文的引文,...
摘要:在算法中,比快速排序还快的,无疑是基数排序,粗略看了一下算法,可能是基础排序中的桶排序。桶排序是稳定的桶排序是常见排序里最快的一种,比快排还要快大多数情况下桶排序非常快,但是同时也非常耗空间以空间换时间 ext/standard/php_array.h https://github.com/php/php-src/blob/master/ext/standard/php_array....
阅读 1923·2021-11-19 09:40
阅读 2132·2021-10-09 09:43
阅读 3293·2021-09-06 15:00
阅读 2809·2019-08-29 13:04
阅读 2766·2019-08-26 11:53
阅读 3512·2019-08-26 11:46
阅读 2319·2019-08-26 11:38
阅读 390·2019-08-26 11:27