摘要:        
在算法篇介绍过求这样的某一个范围内第k大的数的三种方法。分治方法,对于求一组范围内的值可以考虑。但是求多组的时候就不行了,因为这种方法会改变原数组的排序。如果要有多组询问时,就必须赋值到另外一个数组中,结果TLE.代码:View Code 1 #include <iostream> 2 #include <stdio.h> 3 #include <memory.h> 4 #include <algorithm> 5 using namespace std; 6 7 const int maxnum=100005; 8 int array[maxn    阅读全文
posted @ 2012-08-07 17:32
pushing my way
阅读(265)
评论(0)
推荐(0)
        
            
        
        
摘要:        
1.划分树是一种基于线段树的数据结构。主要用于快速求出(在log(n)的时间复杂度内)序列区间的第k大值.2.查找整序列的第k大值方法:a.采用快速查找法,分治思想。然而此方法会破坏原序列,并且需要O(n)的时间复杂度。b.使用二叉平衡树进行维护,此方法每次查找时间复杂度仅为O(logn)。然而此方法丢失了原序列的顺序信息,无法查找出某区间内的第k大值c.划分树:基本思想就是对于某个区间,把它划分成两个子区间,左边区间的数小于右边区间的数。查找的时候通过记录进入左子树的数的个数,确定下一个查找区间,最后范围缩小到1,就找到了。3.建树:使用一个辅助数组对原数组进行排序,找到这个区间的中位数a[    阅读全文
posted @ 2012-08-07 10:57
pushing my way
阅读(239)
评论(0)
推荐(0)
        
 
                    
                
 浙公网安备 33010602011771号
浙公网安备 33010602011771号