首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用O(n)初始化和O(1)查找编写数据结构

用O(n)初始化和O(1)查找编写数据结构
EN

Stack Overflow用户
提问于 2014-12-31 22:10:56
回答 1查看 77关注 0票数 0

给定数组a1, a2, a3, ... , aN

我想要创建一个支持以下需求的数据结构:

  • O(n)中的初始化数据结构
  • 得到O(1)中的4n/5值
  • 求O(1)中的n/5值

我试图用3个最大堆来构建数据结构,但无法在O(n)中初始化堆。

我怎么才能弄清楚?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-31 22:45:10

所谓的"median of medians" algorithm可以在O(n)时间内的无序集中找到kth最小元素。您希望将此应用于k= n/5和k= 4n/5。

算法的结果是一个部分有序的数组,其中所需的kth元素位于k位置,在将n/5元素置于其位置后,我认为可以将4N/5元素放在它的位置,而不必重新执行整个算法,但无论如何,它仍然是O(n)。

假设数组中有O(1)随机访问查找,那么O(1)查找需求将得到满足。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27726771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档