拥有排序好的字典(哈希表,映射或任何键/值结构),您可以轻松地进行二进制搜索来查找项目。 如果我们假设键是唯一的,但是值可以重复,那么我们可以使用哪种数据结构对键进行O(log n)检索,还可以使用O(log n)查询来查找给定数据中的values=something计数?

#1楼 票数:4 已采纳

两个二进制搜索树,一个用于键,第二个用于值,以及相互的指针,将提供所需的功能。 指针从键到值可以是多对一,从值到键可以是一对多。

  ask by norbertpy translate from so

未解决问题?本站智能推荐:

3回复

如何在O(n)时间内在单链表上进行二分查找?

这个早期的问题讨论了在O(n)时间内对双向链表进行二进制搜索。 该答案中的算法工作如下: 转到列表中间进行第一次比较。 如果它等于我们正在寻找的元素,我们就完成了。 如果它比我们正在寻找的元素更大,那么向后走一步,然后重复。 如果它小于我们正在寻找的元素,请向前走一半并
1回复

如何在O(n)的时间内对双链表进行二进制搜索?

我听说有可能在O(n)时间内对双链表实现二进制搜索。 访问双向链表中的随机元素需要O(n)的时间,而二进制搜索访问O(log n)个不同的元素,那么运行时间不应该是O(n log n)吗?
1回复

非随机访问结构中二分查找的复杂性

对已排序数组执行二分查找具有O(logN)复杂度,其中 N 是数组中元素的数量。 但是如果我们在排序(链接)列表中执行二分搜索,那么复杂度是多少? 我们正在对范围的中间元素进行logN比较,但要获得范围,复杂度为O(N)因为列表不是随机访问结构。 时间复杂度也是如此: 1) logN * O(N)
2回复

10个元素的二进制搜索复杂度为0(log10)=1,但所需的比较为4

以下集合包含10个元素 N = 10 O(log 10)= 1 如果必须搜索元素20,则必须执行4次比较操作(即) 二进制搜索如何具有O(log N)的复杂性?
1回复

使用O(log(n))插入和O(1)查找排序数据结构

我在Java编码,我需要一个整数的排序数据结构,其最大插入时间为O(log(n)),索引按O(1)查找。 是否有内置的数据结构可以做到这一点,或者如果没有,我如何自己编程? 我知道Set可以完成第一个任务,但是对于查找元素i,我需要在i之前迭代所有元素。
1回复

什么数据结构将支持键值对,从而可以对键进行排序和修改

哪种数据结构将支持键值对并具有按键排序或优先级的能力,还允许修改和更新键并允许相同键的多个实例? 添加到该结构不是太大的问题,增加密钥的频率要高得多,并且有时需要按指定的值检索密钥。 我已经研究过DoubleLinkedLists,但担心它不是最有效的结构。 我正在研究树的结构,更具体
2回复

试图证明二进制搜索的复杂性是O(log(n))

我试图证明二进制搜索的复杂性。 维基百科说,最糟糕的情况是log(n)。 这意味着: 如果我有16个元素的数组,log(16)是4.我应该有最多4次调用来查找数组中的元素。 我的java代码: Ideaone代码: http ://ideone.com/8Sll9n 输出是:
6回复

使用O(n)存储和O(logn)查询时间的数据结构应该用于范围最小查询吗?

我被算法课的以下作业问题难住了: 假设我们给定了一系列 n 值 x 1 , x 2 ... x n ,并寻求快速回答以下形式的重复查询:给定 i 和 j,找到 x i ... x j 中的最小值 设计一个使用 O(n) 空间并在 O(log n) 时间内回答查询的数据结构。 首先,我不确定一个序列