2013年3月10日

主元素问题

摘要: x称为一个长度为n的数组a的主元素,如果这个数组里面等于x的元素数目不少于n/2个。例如,a={2,3,2,2,5,3,2,4,2}, x = 2就是主元素。给定包含n个元素的数组a,主元素问题就是判断数组a是否包含一个主元素x。三方法实现:方法一:求中位数,主元素肯定是中位数,否则该元素数量少于n/2则不是主元素:快速排序,然后确定中位数时间复杂度O(nlogn)方法二:分治的思想:若T中存在主元素,则将T分为两部分后,T的主元素也必为两部分中至少一部分的主元素,因此可用分治法。将元素划分为两部分,递归地检查两部分有无主元素。算法如下:a.若T只含一个元素,则此元素就是主元素,返回此数。b. 阅读全文

posted @ 2013-03-10 14:42 愤怒的屎壳螂 阅读(435) 评论(0) 推荐(0) 编辑

不动点的O(logn)时间算法(王晓东 算法分析2-8)

摘要: 问题描述设n个不同的整数排好序后存于T[1:n]中。若存在下标i,1<=i<=n,使得T[i]=i,设计一个有效算法找到这个下标。要求算法在最坏情况下的计算时间为O(logn).分析与解答:由于n个整数是不同的,因此对任意1<=i<=n-1有T[i]<=T[i+1]-1假设有n个数A1 A2 A3 ... A(i-1) Ai A(i+1) ... An对应下标为 1 2 3 ... i-1 i i+1 ... n如果Ai>i 则,由于下标是连续增长的,整数序列可能不是连续的,所以对于j>=i 有Aj-Ai >= j-i;如果Ai<i则,同理 阅读全文

posted @ 2013-03-10 12:23 愤怒的屎壳螂 阅读(537) 评论(0) 推荐(0) 编辑

导航