【发布时间】:2011-08-29 15:53:55
【问题描述】:
可能重复:
How to find the kth largest element in an unsorted array of length n in O(n)?
我目前正在做课程作业。 任务是在数组中找到第 n 个最小的元素。 (不排序!)
我试图了解 BFPRT 算法,但据我所知,它仅在您想计算中位数而不是“第 n 个最小”元素时才有用。
我的另一个想法是通过将较小/较大的节点附加到根节点的左/右来将数组转换为树。但是,我不确定这是否算作排序。 为了加快速度,我可以在每个节点中存储子节点的数量。
完整的分配还包括算法必须是递归的。 还有考虑其他数据结构的提示。
您对我将数组转换为平衡树的想法有何看法?
还有其他我可能错过的选项吗?
编辑:我查看了各种类似的问题,但无法完全理解答案/将它们应用于我的特定任务。
【问题讨论】:
-
我发现有关数据结构的提示令人惊讶。解决这个问题的典型算法不需要额外的数据结构。
标签: algorithm