哈希表支持在 Θ(1) 时间内进行以下操作。
1) 搜索
2) 插入
3) 删除
自平衡二叉搜索树 (BST)(如红黑树、AVL 树、Splay 树等)中上述操作的时间复杂度为 O(Logn)。
所以哈希表似乎在所有常见操作中都击败了 BST。什么时候我们应该更喜欢 BST 而不是哈希表,有什么优势。以下是支持 BST 的一些要点。
- 只需执行 BST 的中序遍历,我们就可以按排序顺序获取所有键。这不是哈希表中的自然操作,需要额外的努力。
- 使用 BST 可以轻松进行顺序统计、查找最近的较低和较大元素、进行范围查询。像排序一样,这些操作不是哈希表的自然操作。
- 与散列相比,BST 易于实现,我们可以轻松实现自己定制的 BST。为了实现Hashing,我们通常依赖于编程语言提供的库。
- 使用自平衡 BST,所有操作都保证在 O(Logn) 时间内工作。但是对于散列,Θ(1) 是平均时间,某些特定操作可能会很昂贵,尤其是在调整表大小时。
如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程和学生竞争性编程现场课程。