当我需要在散列表或平衡二叉树之间进行选择以实现集合或关联数组时,应该考虑哪些因素?
通常来说,我不能回答这个问题。
问题是哈希表和平衡二叉树的类型很多,它们的性能差异很大。
因此,简单的答案是:它取决于您所需的功能。如果不需要排序,请使用哈希表,否则请使用平衡的二叉树。
对于更详尽的答案,让我们考虑一些替代方法。
哈希表(有关某些基础知识,请参阅Wikipedia的条目)
二叉树
我们不要忘记O(1)是渐近复杂性。对于少数元素,系数通常更重要(从性能角度而言)。如果您的哈希函数很慢,则尤其如此。
最后,对于集合,您可能还希望考虑概率数据结构,例如BloomFilters。