如何在任何树数据结构中存储单个键的多个值?

时间:2017-10-06 12:06:33

标签: algorithm data-structures big-o binary-search-tree multimap

我知道有一个名为MultiMap的数据结构,它是一个具有O(n)线性搜索时间的表结构。我希望有更好的搜索时间。因此,想知道我是否可以使用树形结构或它的变体(请建议)。

编辑:

好的,MultiMap根据其实现中的答案/文档进行O(log n)搜索和遍历。

  1. 但是我对为什么登录n感到困惑,如下所示: enter image description here
  2. 首先,我必须转到第n个元素(我正在寻找的那个)然后,我会输入它的值(列表),遍历列表并找到值,或者只是检索列表本身(值)?

    1. 任何人都可以建议BST或B-Tree我应该选择其中一个来存储我的数据来自包含10,000行的文本文件,每行都有123 3456 4567 5678 321这样的结构(我有更多10,000行像那样)在给出123时搜索321,反之亦然。
    2. 我认为B-Tree将是一个不错的选择,但我不确定,另外一件事,搜索321,我想象的是如何将123存储为关键字并将321存储为其值?

      **可能有多个123 3456 4567 5678 989123 3456 4567 5678 787因此我假设具有多个值数据结构的键应该对此有所帮助。

2 个答案:

答案 0 :(得分:1)

多图的搜索时间复杂度大小为对数,而非线性。

实现这一目标的实现是C ++ std::multimap,它提供了multimap::find方法,提到:

  

复杂性

     

对数大小。

答案 1 :(得分:0)

作为集合哈希实现的MultiMap(即集合的哈希)具有恒定的平均搜索时间

在C ++中,此实现以unordered_multimap(以及所提及的complexity)的形式存在。