为什么我们使用哈希进行搜索?在二叉搜索树上使用散列有什么好处?
答案 0 :(得分:5)
散列通常是一个恒定的时间操作,而二叉树具有对数时间复杂度。
因为哈希的计算不是基于集合中的项目数,而是基于要搜索的项目,所以集合的大小与查找项目所花费的时间无关。然而,大多数散列算法会产生冲突,从而增加了时间复杂度,因此不太可能获得完美的恒定时间查找。
使用二叉树,您必须在找到项目之前进行log2N比较。
答案 1 :(得分:2)
维基百科解释得很好:
http://en.wikipedia.org/wiki/Hash_table#Features
总结:插入通常很慢,读取速度比树快。
对于Java:只要你有一些键/值对,你经常阅读并且不经常写,而且一切都很容易适合RAM,使用HashTable进行快速读取访问和令人难以置信的代码维护。
答案 2 :(得分:0)
散列意味着使用某些功能或 将对象数据映射到某些算法的算法 代表性整数值。这个 所谓的哈希码(或简称哈希) 然后可以用来缩小范围 在寻找时我们的搜索 地图中的项目。
如果需要使用的算法 快速查找信息 你需要的是HashTable 最合适的算法,如 它只是生成你的哈希 密钥对象并使用它来访问 目标数据 - 它是O(1)。该 其他是O(N)(大小的链接列表 N - 你必须遍历 一次列出一个,平均为N / 2 时间)和O(log N)(二叉树 - 你 每个搜索空间减半 迭代 - 仅当树是 平衡,所以这取决于你 实现,不平衡的树可以 表现明显更糟糕。)
答案 3 :(得分:0)
如果您有较低的插入次数和统一的插槽分布,则哈希表最适合搜索(=)。时间复杂度为O(n + k) - 线性。
如果您想进行比较操作(<,>)
,这不是一个好主意