字典实现(Balance二进制搜索树v.s.哈希表)

时间:2011-04-15 01:13:17

标签: dictionary hashtable binary-search-tree

在什么情况下使用平衡二叉搜索树而不是哈希表来实现字典ADT更好?

我的假设是,由于其自​​然顺序,使用二叉搜索树总是更好。

但确实哈希表的搜索时间可以和O(1),v。一样好。 O(logn)表示二叉树。

所以我不确定会有什么样的情况。

3 个答案:

答案 0 :(得分:1)

哈希表在填满并且需要重新分配内存(在硬实时系统的上下文中)时可能会出现性能问题.Binary树没有此问题。 散列表需要比实际使用的内存更多的内存,因为二叉树使用的内存比他们需要的多。

答案 1 :(得分:0)

您的问题已包含答案:

如果您不需要任何内在排序,则使用哈希表以获得更好的性能。如果您的要求需要某种排序,请考虑使用树。

答案 2 :(得分:0)

字典的时间复杂度是:

EditText

那么您在哪里使用BST与字典?这是BST的一些主要优点。

  • 使用BST,您始终可以执行O(log(n))操作,但是调整哈希表的大小是一项昂贵的操作
  • 如果需要按排序顺序获取键,则可以使它们遍历顺序树。排序对字典来说不是自然的
  • 进行统计,例如查找最接近的上下元素或范围查询。