哈希表是否总是比树快?尽管哈希表具有O(1)搜索复杂度,但假设如果由于哈希函数设计不当而发生大量冲突,并且如果我们使用链结构(例如平衡树)来处理冲突,那么最坏的搜索运行时间将是O(log n )。因此,即使在最坏的情况下,哈希表总是比树快,我能得出大小数据集的结论吗?另外,如果我有足够的内存并且不想进行范围搜索,我是否可以总是使用哈希表?
哈希表是否总是比树快?
不,并非 总是如此 。这取决于许多因素,例如集合的大小,哈希函数以及某些哈希表实现-以及删除操作的数量。
哈希表 平均O(1)每个操作-但并非总是如此。他们可能在 最坏的情况下 。 O(n)
O(1)
O(n)
我现在可以想到一些偏爱树木的原因:
但是,如果数据量很大,那么延迟就不是问题,并且不可能发生冲突-哈希表比使用树更好地渐近。