Data structures 什么样的数据结构在搜索和插入函数时最快?

Data structures 什么样的数据结构在搜索和插入函数时最快?,data-structures,time,language-agnostic,big-o,Data Structures,Time,Language Agnostic,Big O,这个问题几乎说明了这一切,但我正在构建一个编译器,并试图决定我的符号表使用哪种数据结构。考虑到符号表需要的唯一功能是搜索和插入,我希望使用一种能够尽快完成这些操作的数据结构。有什么建议吗?如果我没弄错的话,它的查找速度是O(1)。通常用于此。使用Nbin和哈希函数(取每个符号中的字母之和,mod N)的简单实现在插入和搜索时应该非常接近O(1)。关于哈希表查找-只有在没有或很少发生冲突的情况下才是O(1)-因此假设您有适当的哈希函数,它通常是O(1),但在最坏的情况下,它可能以O(N)结束。对数

这个问题几乎说明了这一切,但我正在构建一个编译器,并试图决定我的符号表使用哪种数据结构。考虑到符号表需要的唯一功能是搜索和插入,我希望使用一种能够尽快完成这些操作的数据结构。有什么建议吗?

如果我没弄错的话,它的查找速度是O(1)。

通常用于此。使用
N
bin和哈希函数(取每个符号中的字母之和,mod N)的简单实现在插入和搜索时应该非常接近O(1)。

关于哈希表查找-只有在没有或很少发生冲突的情况下才是O(1)-因此假设您有适当的哈希函数,它通常是O(1),但在最坏的情况下,它可能以O(N)结束。对数据大小的良好估计至关重要


你还应该考虑你打算使用的哈希函数的时间复杂度。你建议的哈希函数相当糟糕,它会使所有的ANGRAM冲突。系统哈希函数会更好(如果OP最喜欢的语言中有哈希函数的话)。我必须找出一个更好的哈希函数来使用,但是哈希表似乎确实是符号表的一种方式。有人知道标准模板库的SET容器作为符号表的性能如何吗?