设A [0..n - 1]是不同整数的数组。 A中等级k的整数是A中整数中的第k个最大整数.A的中值是A中的整数,其中等级b(n-1)/ 2c。算法怎么看,给定k在Θ(n)时间内找到A中秩为k的整数?
答案 0 :(得分:1)
您要搜索的算法称为QuickSelect。它是一个随机算法,它在由 n 元素组成的数组上的预期 O ( n )时间内工作。
A worse-case O(n) algorithm也存在,但它只是理论上的兴趣。
答案 1 :(得分:0)
如果你可以妥协从Θ(n)到Θ(K * log(K))的时间 - “K”代表K最大整数。然后看看MaxHeap排序。当“K”很小时,它将接近Θ(n),但在处理中位数时肯定会更大。