【发布时间】:2015-05-26 12:37:11
【问题描述】:
我正在尝试从头开始构建一个能够容纳大量(单词/字符)字典的数据结构。
“单词”可以由任意数量的字符组成。
字典需要标准方法,例如搜索、插入、删除。
我需要方法的时间复杂度比O(log(n))更好,所以在O(log(n))到O(1)之间,例如log(log(n))
其中 n = 字典大小(元素数量)
我研究了各种树结构,例如具有 log(n) 方法(不够快)的 b-tree 以及似乎最适合字典的 trie,但由于单词可以任意大,它的复杂性似乎不会比log(n) 快。
如果可以的话,请提供任何解释
【问题讨论】:
-
这里的
n是什么意思? -
字典大小通常。
-
trie 的内存需求很大,但访问时间当然比
O(log n)快。如果我没记错的话,访问时间取决于单词的长度,而不是结构中单词的数量。这还取决于您使用的 trie 的具体实现。 -
不妨把它变成一个答案,他没有说任何关于内存约束的事情。
-
哈希表不适合您的要求有什么原因吗?
标签: java algorithm dictionary data-structures big-o