BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂度,五位算法作者做了精妙的处理。算法步骤:1.将n个元素每5...
分类:
其他好文 时间:
2014-09-15 12:35:28
阅读次数:
222
UVA 1521 - GCD Guessing Game
题目链接
题意:一个数字x在1-n之间,现在猜数字,每次猜一个数字a,告知gcd(x, a)的答案,问最坏情况下需要猜几次
思路:在素数上考虑,猜一组素数的乘积的数字,就可以把这些素数组成的数字都猜出来,答案就是组数,这样问题就是如何分组使得组数最小,每次取最后一个,尽量和前面小的合并,就能使得组数最小
代码:
...
分类:
其他好文 时间:
2014-09-11 13:56:02
阅读次数:
306
本章节主要证明对包含n个元素的输入序列来说,任何比较排序在最坏情况下都要经过omega(nlgn)次比较。从而证明归并排序和堆排序是渐近最优的。同时,介绍了三种线性时间复杂度的排序算法:计数排序、基数排序和桶排序。1. 排序算法的下界在确定排序算法的下界时,借助决策树模型。决策树模型是一棵完全二叉树...
分类:
其他好文 时间:
2014-08-29 18:01:18
阅读次数:
239
AKamai??????????????? 上界(最坏情况分析worst-case-analysis):对用户承诺 average case:T(n)是所有输入的加权平均值,期望时间 bast case(假象):有些算法对特定输入的时间时间更短,但是平均时间和上界可能很长 ...
分类:
其他好文 时间:
2014-08-29 13:16:18
阅读次数:
167
二叉查找树的基本操作包括搜索、插入、删除、取最大和最小值等都能够在O(h)时间复杂度内实现,因此能在期望时间O(lgn)下实现,但是二叉查找树的平衡性在这些操作中并没有得到维护,因此其高度可能会变得很高,当其高度较高时,而二叉查找树的性能就未必比链表好了,所以二叉查找树的集合操作是期望时间O(lgn),最坏情况下为O(n)。
红黑树也是一种二叉查找树,它拥有二叉查找树的性质,同时红黑树还...
分类:
其他好文 时间:
2014-08-28 00:58:48
阅读次数:
314
对于包含n个数的输入数组来说,快速排序是一种最坏情况时间复杂度为theta(n^2)的排序算法。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能非常好,期望时间复杂度是theta(nlgn),而且常数因子非常小,并可进行原址排序。1. 快速排序的描述快速排序可...
分类:
其他好文 时间:
2014-08-24 22:00:13
阅读次数:
255
关于冒泡排序时间复杂性,大家都知道最坏情况下为O(n^2)为什么最好情况下为O(n),很多人有疑问,下面我们就来分析一下:
首先大家看看下面两种冒泡排序的方法:
方法一:
//冒泡排序
template class T>
void Bubble(T a[],int n)
{
//把数组a[0:n-1]中最大的元素冒泡移到右边
for(int i=...
分类:
其他好文 时间:
2014-08-17 09:11:52
阅读次数:
199
子字符串查找:给定一段长度为N的文本和一个长度为M的模式字符串,在文本中找到一个和该模式相符的子字符串
广泛使用的暴力算法,虽然在最坏情况下的运行时间与M*N成正比,但是在实际中,绝大多数比较在比较第一个字符时就会产生不匹配,它实际运行时间一般与M+N成正比
下面是暴力子字符串查找算法的Java实现:
/**
* 暴力字符串查找,如果找到,返回pat在txt中第一次出现的位置;没有找到则...
分类:
其他好文 时间:
2014-08-16 16:29:10
阅读次数:
209
快速排序在最坏情况下的时间复杂度为O(n^2),虽然在最坏情况下运行时间比较差,但是快速排序通常是用于排序的最佳选择,因为其平均性能相当好,期望的运行时间为O(nlgn),且在O(nlgn)的记号中隐含的常数因子很小。
快速排序和合并排序有相似之处,都是需要划分序列,在合并排序中,划分的过程很简单,直接选择元素序列的中间位划分位置,排序是在合并的过程中实现的,所以合并排序的合并过程很重要;相比合...
分类:
其他好文 时间:
2014-08-10 15:49:50
阅读次数:
213
声明:本文是对某高中生的竞赛论文学习的文章介绍: 二叉查找树能够支持多种动态集合操作。对于一个含有n个结点的完全二叉树,这些操作的最还情况运行时间是O(lgn),但如果树是含有n个结点的线性链,则这些操作的最坏情况运行时间为O(n)。而像红黑树、AVL树这种二叉查找树的变形在最坏情况下,仍能保持较....
分类:
其他好文 时间:
2014-08-08 01:32:25
阅读次数:
423