【问题标题】:What data structure would have the fastest time for search and insert functions?哪种数据结构的搜索和插入功能最快?
【发布时间】:2010-02-21 22:42:51
【问题描述】:

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

【问题讨论】:

    标签: data-structures time language-agnostic big-o


    【解决方案1】:

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

    【讨论】:

    • 您建议的哈希函数相当糟糕,它会使所有字谜发生冲突。系统哈希函数会更好(如果有一个在 OP 最喜欢的语言中)。
    • 我必须想出一个更好的散列函数来使用,但散列表似乎是使用符号表的方法。
    • 有谁知道标准模板库的 SET 容器作为符号表的性能如何?
    【解决方案2】:

    如果我没记错的话,Dictionary/Hashtable 的查找速度为 O(1)。

    【讨论】:

      【解决方案3】:

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

      您还应该考虑您打算使用的散列函数的时间复杂度

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-10
        • 2015-10-24
        • 2011-05-11
        • 1970-01-01
        相关资源
        最近更新 更多