快速排序,正如它的名字所体现,是在实践中已知的最快的排序算法,平均运行时间为O(NlogN),最坏的运行时间为O(N^2)。算法的基本思想很简单,然而想要写出一个高效的快速排序算法并不是那么简单。基准的选择,米素的分割等都至关重要,如果你不清楚如何优化快速排序算法,本文你不该错过。
算法思想
快速排序利用了分治的策略。而分治的基本基本思想是:将原问题划分为若干与原问题类似子问题,解决这些子问题,将子问题的解组成原问题的解。
那么如何利用分治的思想对数据进行排序呢?假如有一个米素 *** A:
选择A中的任意一个米素pivot,该米素作为基准
将小于基准的米素移到左边,大于基准的米素移到右边(分区操作)
A被pivot分为两部分,继续对剩下的两部分做同样的处理
直到所有子集米素不再需要进行上述步骤
可以看到算法思想比较简单,然而上述步骤实际又该如何处理呢?
如何选择基准
实际上无论怎么选择基准,都不会影响排序结果,但是不同的选择却可能影响整体排序时间,因为基准选择不同,会导致分割的两个 *** 大小不同,如果分割之后,两个 *** 大小是几乎相等的,那么我们整体分割的次数显然也会减少,这样整体耗费的时间也相应降低。我们来看一下有哪些可选择策略。
选择之一个或者最后一个
如果待排序数是随机的,那么选择之一个或者最后一个作基准是没有什么问题的,这也是我们最常见到的选择方案。但如果待排序数据已经排好序的,就会产生一个很糟糕的分割。几乎所有的数据都被分割到一个 *** 中,而另一个 *** 没有数据。这样的情况下,时间花费了,却没有做太多实事。而它的时间复杂度就是最差的情况O(N^2)。因此这种策略是绝对不推荐的。
微信现在有更多的微选功能,所以很多合作伙伴都在猜测这个功能是什么,它的用途是什么,在使用过程中会遇到什么常见问题?这些都是小伙伴的好奇心,在这里快速搜索编辑分享相关信息,一起看。 1. 登录别人微信...
《冲击波杀手》那个黑客是谁? flashsky 创始人之一,启明星辰安全专家,擅长古体诗词,7月中公开rpc漏洞利用方式源代码,公开溢出分析报告,造成全球安全领域的震动,冲击波蠕虫的主要传播技术来源于...
减肥产品中不乏减肥茶,但这些减肥茶只能达到短期减重的效果,主要是通过排便来减重,不能从根本上减重。乌龙茶、菊花茶、玫瑰花茶、柠檬茶、薏仁茶、荷叶茶、决明子茶以及大麦芽茶等茶对于减肥效果是明显的,平时可...
在新一期的暴雪嘉年华中(北京时间11月07日3:00),暴雪公司向民众展示了以下视频: 1、魔兽天下新版本,7.0《军团再临》的高清中文版宣传动画; 2、魔兽天下真人版影戏高清中文预告片。 魔...
如何把高尔夫球打得更远?杰克·尼克劳斯曾言:高尔夫是一项技巧运动,而不是四肢发达的体力运动。 所以,想打远不能靠蛮力,技巧才是最佳途径。为什么很多身材瘦小的球员有着不俗的距离,就是因为人家...
中国黑客通称啥意思 1米手机精准定位(手机怎么手机定位找人) 哪些画网络黑客 在网上怎么才能寻找一个人(怎祥在网络上寻找一个人) 网络黑客怎祥履行数据文件 网络黑客分成好多个...