【发布时间】:2010-02-21 22:42:51
【问题描述】:
这个问题几乎说明了一切,但我正在构建一个编译器并试图决定为我的符号表使用哪种数据结构。考虑到符号表需要的唯一功能是搜索和插入,我想使用可以尽快完成这些操作的数据结构。有什么建议吗?
【问题讨论】:
标签: data-structures time language-agnostic big-o
这个问题几乎说明了一切,但我正在构建一个编译器并试图决定为我的符号表使用哪种数据结构。考虑到符号表需要的唯一功能是搜索和插入,我想使用可以尽快完成这些操作的数据结构。有什么建议吗?
【问题讨论】:
标签: data-structures time language-agnostic big-o
Hash tables 非常常用。使用N bins 和一个哈希函数(取每个符号中的字母之和(mod N))的简单实现在插入和搜索时应该非常接近 O(1)。
【讨论】:
如果我没记错的话,Dictionary/Hashtable 的查找速度为 O(1)。
【讨论】:
关于哈希表查找 - 仅当没有或很少发生冲突时它是 O(1) - 所以假设你有适当的散列函数,它通常是 O(1),但在最坏的情况下它可能以 O(N) 结束.对数据大小的良好估计至关重要。
您还应该考虑您打算使用的散列函数的时间复杂度
【讨论】: