哪个数据结构可以存储数百万个对象?

时间:2016-02-29 23:31:49

标签: optimization data-structures

有一百万个对象被命名,我需要一个数据结构,允许我快速搜索一个名称并快速插入一个。什么是最佳选择,你的推理是什么?

我在想哈希表或二叉树,但我不确定。

2 个答案:

答案 0 :(得分:1)

二进制搜索树(BST)具有搜索(键)和插入()操作的O(Log(n))的最坏情况复杂性。传统设计不支持搜索(对象)(但您可以添加该功能)。

由于您只提到了二叉树而不是BST,因此搜索(键),搜索(对象)和插入(对象)将分别为O(n),O(n)和O(1)。

对于Hashmap,搜索(对象)是O(n),包含(键)是O(1),插入(键,对象)也是O(1),前提是没有很多链接和哈希功能很好。

有你的选择。

答案 1 :(得分:-1)

优化搜索和插入从根本上将您拉向相反的方向。了解您的用例以确定哪一个更重要,这对您来说非常重要。一旦你知道,你可以选择正确的结构。

有几个选项:

  • 向量:恒定时间插入,线性时间搜索(在最坏的情况下)
  • tree:日志时间插入,日志时间搜索(最坏情况下)
  • hashmap:在许多情况下两者都是恒定时间,但在最坏情况下是线性的