【发布时间】:2012-03-02 03:06:48
【问题描述】:
为什么我总是在哈希表上看到这些函数的不同运行时复杂性?
在 wiki 上,搜索和删除是 O(n)(我认为哈希表的重点是不断查找,所以如果搜索是 O(n),那还有什么意义)。
在不久前的一些课程笔记中,我看到了取决于某些细节的各种复杂性,包括所有 O(1) 的复杂性。如果我可以得到所有 O(1),为什么还要使用任何其他实现?
如果我在 C++ 或 Java 等语言中使用标准哈希表,我可以预期时间复杂度是多少?
【问题讨论】:
-
一个完美的方法是 O(1) 查找,但为此您必须在设计表格时知道数据是什么。
-
O(n) 是最坏情况,O(1) 是平均情况。在最坏的情况下,您可能会将 N 个元素都插入到同一个桶中。那么,对于这个数据集,删除和搜索也会是O(n)。
标签: algorithm data-structures hash time-complexity hashtable