java - 字典数据结构+快速复杂度方法

标签 java algorithm dictionary data-structures big-o

我正在尝试从头开始构建一个能够容纳大量字典(单词/字符)的数据结构。

“单词”可以由任意多的字符组成。

字典需要标准方法,例如搜索、插入、删除。

我需要这些方法的时间复杂度优于 O(log(n)),所以介于O(log(n))O(1),例如 log(log(n))

其中 n = 字典大小(元素数量)

我研究了各种树结构,例如具有 log(n) 方法(不够快)的 b 树以及似乎最适合字典的 trie,但是由于单词可以任意大,它的复杂度似乎不会比 log(n) 快。

如果可以,请提供任何解释

最佳答案

trie 对内存有很大的要求,但访问时间通常O(log n) 快。

如果我没记错的话,访问时间取决于单词的长度,而不是结构中单词的数量。

效率和内存消耗还取决于您选择使用的 trie 的具体实现。那里有一些非常有效的实现。

有关 Tries 的更多信息,请参阅:

http://en.wikipedia.org/wiki/Trie

http://algs4.cs.princeton.edu/52trie/

http://algs4.cs.princeton.edu/52trie/TrieST.java.html

https://www.topcoder.com/community/data-science/data-science-tutorials/using-tries/

关于java - 字典数据结构+快速复杂度方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30458801/

相关文章:

java - 从 map 中检索对象

c++ - 从字符串列表的列表的映射中获取字符串

java - 从数据库中搜索数据在java中没有搜索到该术语?

java - 使用 Activiti 引擎在集群应用程序上执行异步服务任务

php - 一个元素在表格中重复了多少次

sql - SQL 字典表是否应该有 IDENTITY 列

java - Windows 和 Linux 的应用程序开发

java - Maven JAR 插件 3.0.2 错误 : You have to use a classifier to attach supplemental artifacts to the project instead of replacing them

java - 获取加起来等于给定数字的所有可能的总和

python-3.x - python : Iterate through every pixel in an image for image recognition