二叉搜索树基本操作都可以在O(h)内完成,然而数的高度较高时,可能并不比在链表上执行的快。红黑树是平衡搜索树中的一种保证在最坏情况下时间复杂度为O(lg(n)) 红黑树的性质 每个节点或是红色或是黑色 根节点是黑色的 每个叶节点是黑色的 如果一个节点是红色,则两个子节点是黑色的 每个节点,到后代叶子
分类:
其他好文 时间:
2016-02-26 17:10:46
阅读次数:
262
算法 最坏情况 平均情况/期望运行时间 插入排序 Θ(n^2) Θ(n^2) 归并排序 Θ(nlg(n)) Θ(nlg(n)) 堆排序 O(nlg(n)) 快速排序 Θ(n^2) Θ(n^2)(期望) 计数排序 Θ(k+n) Θ(k+n) 基数排序 Θ(d(k+n)) Θ(d(k+n)) 桶排序 Θ
分类:
编程语言 时间:
2016-02-23 20:40:34
阅读次数:
182
在前面的文章中,我们介绍的都是基于比较的排序。对于比较排序,对含n个元素的序列进行排序,在最坏情况下都要用O(n logn)次比较(归并排序和堆排序是渐近最优的)。本文将继续介绍以线性时间运行的排序算法,他们使用的是非比较排序,因此下界O(n logn)对它们不适用。计数排序想象下面这种情况:一个班有k个人,需要排成一条纵队,地面上已经用粉笔按从小到大的顺序标明了1到k个号码,要求按身高从低到高排列...
分类:
编程语言 时间:
2016-02-20 13:24:39
阅读次数:
193
线性数据结构(例如链表)在检索数据项时,最坏情况下可能需要遍历整个链表才能找到检索的数据项或者直接没有找到要检索的数据项,这样检索数据的时间复杂度为O(n),其中n为链表的大小(即链表中数据项的数目)。当需要处理的数据量很大时,这样的时间复杂度是不可接受的。而使用二叉查找树(binary searc
分类:
其他好文 时间:
2016-02-18 11:49:43
阅读次数:
182
问题:给定一个数组A,A存有n个互不相同的整数。定义:若iA[j],则称(i,j)为A的一个逆序对(inversation)。设计一个O(nlogn)算法求A中逆序对个数。 显然最坏情况下逆序对有n(n-1)/2个,如;5 4 3 2 1完全逆序,逆序对有(5-1)*5/2=10对。若用暴...
分类:
编程语言 时间:
2016-01-20 01:05:23
阅读次数:
385
序高速排序(QuickSort)也是一种排序算法,对包括n个数组的输入数组。最坏情况执行时间为O(n^2)。尽管这个最坏情况执行时间比較差。可是高速排序一般是用于排序的最佳有用选择。这是由于其平均性能相当好。期望的执行时间为O(nlgn)。且O(nlgn)中隐含的常数因子非常小。另外...
分类:
编程语言 时间:
2016-01-04 10:13:30
阅读次数:
251
BFPRT算法是解决从n个数中选择第k大或第k小的数这个经典问题的著名算法,但很多人并不了解其细节。本文将首先介绍求解这个第k小数字问题的几个思路,然后重点介绍在最坏情况下复杂度仍然为O(n)的BFPRT算法。一 基本思路关于选择第k小的数有许多方法将n个数排序(比如快速排序或归并排序),选取排序后...
分类:
编程语言 时间:
2015-12-31 22:55:03
阅读次数:
718
题目描述上一题原题思路题目特性决定思路就那样二分查找考虑重复情况分情况不过最坏情况还是O(n) (全部重复)懒得优化就是了就这样快速写完去打个羊库库压压惊bool search(vector& nums, int target) { int start = 0, end = nums.size...
分类:
其他好文 时间:
2015-12-19 21:43:48
阅读次数:
165
在最坏情况下,任何比较排序算法都需要做O(nlgn)次比较。然而,在指定的条件下,线性时间的排序算法可以使得排序在O(n)时间内完成。计数排序 假设n个输入元素中的每一个都是0到k区间内的一个整数,其中k为某个整数。k=O(n)时,排序运行时间为O(n)。主要思想: 创建长度为k的数组C,将对应.....
分类:
编程语言 时间:
2015-12-15 01:01:37
阅读次数:
193
对于包含n个数的数组来说,快速排序是一种最坏情况下时间复杂度为O(n^2)的排序算法。虽然最坏情况下的时间复杂度很差,但是没有什么特殊的输入会导致最坏情况的发生。他的平均性能即期望时间复杂度是O(nlgn),而且隐含的常数因子非常小。因此它是实际排序应用中最好的选择。 假设我们现在对“6 1 2 7...
分类:
编程语言 时间:
2015-12-06 14:29:16
阅读次数:
183