![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 92
排序算法原理
W24-
这个作者很懒,什么都没留下…
展开
-
最坏情况运行时间为Ο(n logn)的快速排序算法
快速排序改进:最坏情况下的运行时间为 O(n log n)O(n\ log\ n)O(n log n)快速排序的运行时间取决于基准元素(主元)的选取,若算法的每一次递归调用过程中,划分都是最大程度不平衡的,即划分产生的两个子问题分别包含了 n−1n-1n−1 和 000 个元素(因为基准元素不会被包含在后续的递归调用过程中),快速排序的最坏情况发生了。此时算法运行时间的递归式可以表示为:T(n)=T(n−1)+O(n)T(n) = T(n-1)+O(n)T(原创 2020-12-15 20:25:54 · 2488 阅读 · 0 评论 -
查找数组中第 i 个顺序统计量算法详解
参考《算法导论(第三版)》第九章。在一个由 nnn 个元素组成的集合中,第 iii 个顺序统计量(order statistic)是指该集合中第 iii 小的元素。例如,最小值是第 1 个顺序统计量(iii = 1),最大值是第 nnn 个顺序统计量(iii = nnn),非形式化地来说,一个中位数(median) 是它所属集合中的“中点元素”。如果不考虑 nnn 的奇偶性,中位数总是出现在 i=⌊(n+1)/2⌋i=\lfloor(n+1)/2 \rfloori=⌊(n+1)/2⌋ 处(下中位数)和原创 2020-12-15 20:18:41 · 755 阅读 · 0 评论 -
排序算法——桶排序简介
算法思想桶排序是计数排序的改进,计数排序申请的额外空间跨度从最小元素值到最大元素值,若待排序集合中元素不是依次递增的,则必然有空间浪费情况。桶排序则是弱化了这种浪费情况,假设待排序的一组数均匀独立地分布在一个范围内,不再是为最小值和最大值之间的每一个位置申请空间,而是为最小值和最大值之间每一个固定大小的区间申请空间,尽量减少元素值大小不连续情况下的空间浪费情况。也可以说计数排序是一类特殊的桶排序,是每个桶只存储相同的元素时的桶排序。一句话总结桶排序:划分为多个范围相同的区间,每个区间自排序,最后合并。原创 2020-12-13 21:20:10 · 374 阅读 · 0 评论 -
排序算法——基数排序简介
基数排序基数排序也是一种稳定排序算法,且一般计数排序被用在基数排序过程中。基数排序包括 LSD(Least significant digital) 和 MSD(Least significant digital) 两大类。LSD 基数排序的思想非常直观:假设一个数组的最高位有 ddd 位,那么依次从低位向高位处理,先排好个位,然后在排好个位的基础上排十位,以此类推,直到遍历完最高位次,排序结束。每一次都使用一种稳定排序算法对该数组进行排序。上图表示一个由 7 个 3 位数组成的列表的基数排序。最原创 2020-12-12 10:53:59 · 150 阅读 · 0 评论 -
排序算法——计数排序详解
在排序的最终结果中,各元素的次序依赖于它们之间的比较。这类排序算法被称为比较排序。对于包含 nnn 个元素的输入序列来说,任何比较排序算法在最坏情况下都要经过至少 O(n log n)O(n\ log\ n)O(n log n) 次比较。而一些排序算法是用运算而不是比较来确定排序顺序的,如计数排序、基数排序以及桶排序。因此,比较次数的下界 O(n log n)O(n\ log\ n)O(n log n) 对它们是不适用的。下原创 2020-12-10 09:37:21 · 1871 阅读 · 0 评论 -
排序算法——快速排序详解
参考《算法导论(第三版)》第七章。快速排序是一种最坏情况时间复杂度为 O(n2)O(n^2)O(n2) 的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好:它的期望时间复杂度为 O(n log n)O(n\ log\ n)O(n log n),而且 O(n log n)O(n\ log\ n)O(n log n) 中隐含的常数因子非常小。快速排序是一种原址(原地、就地)原创 2020-11-29 15:53:59 · 1027 阅读 · 0 评论 -
排序算法——堆排序详解
文章目录(二叉)堆简介堆的分类堆的基本操作计算堆中每个结点的父节点、左孩子和右孩子的下标维护堆的性质:Max_HeapifyMax\_HeapifyMax_Heapify堆的插入操作提取并删除堆顶元素修改堆中元素的值自底向上建堆,任何情况下的时间复杂度为 O(n)O(n)O(n)(调整法)自顶向下建堆,最坏情况下的时间复杂度为 O(nlog n)O(nlog\ n)O(nlog n)(插入法)堆排序参考《算法导论(第三版)》第 6 章。堆排序是利用堆这种数据结构而设计的一种排序算法。原创 2020-11-28 11:17:20 · 810 阅读 · 0 评论