有一百万个对象被命名,我需要一个数据结构,允许我快速搜索一个名称并快速插入一个。什么是最佳选择,你的推理是什么?
我在想哈希表或二叉树,但我不确定。
答案 0 :(得分:1)
二进制搜索树(BST)具有搜索(键)和插入()操作的O(Log(n))的最坏情况复杂性。传统设计不支持搜索(对象)(但您可以添加该功能)。
由于您只提到了二叉树而不是BST,因此搜索(键),搜索(对象)和插入(对象)将分别为O(n),O(n)和O(1)。
对于Hashmap,搜索(对象)是O(n),包含(键)是O(1),插入(键,对象)也是O(1),前提是没有很多链接和哈希功能很好。
有你的选择。
答案 1 :(得分:-1)
优化搜索和插入从根本上将您拉向相反的方向。了解您的用例以确定哪一个更重要,这对您来说非常重要。一旦你知道,你可以选择正确的结构。
有几个选项: