建议搜索在Θ(n)中运行的算法?

时间:2017-02-15 15:28:12

标签: algorithm sorting search

设A [0..n - 1]是不同整数的数组。 A中等级k的整数是A中整数中的第k个最大整数.A的中值是A中的整数,其中等级b(n-1)/ 2c。算法怎么看,给定k在Θ(n)时间内找到A中秩为k的整数?

2 个答案:

答案 0 :(得分:1)

您要搜索的算法称为QuickSelect。它是一个随机算法,它在由 n 元素组成的数组上的预期 O n )时间内工作。

A worse-case O(n) algorithm也存在,但它只是理论上的兴趣。

答案 1 :(得分:0)

如果你可以妥协从Θ(n)到Θ(K * log(K))的时间 - “K”代表K最大整数。然后看看MaxHeap排序。当“K”很小时,它将接近Θ(n),但在处理中位数时肯定会更大。