2011-07-04 56 views
37

查询操作OR contains单个可以在最坏的情况下是O(n)对不对?那么,对于n元素,在hashSet中查找的将是O(n^2)HashSet查找复杂度?

+3

你所说的“为n个元素”究竟是什么意思?为每个元素执行查找?请注意,即使最坏的情况是O(n),它通常是O(1)。 –

回答

59

是的,但它确实是最糟糕的情况:如果在HashSet所有元素都具有相同的散列码(或散列码导致同一个桶)。用正确书写的hashCode和正态分布的密钥样本,查找是O(1)。

-18

lookp需要O(C)

C =常数

6

是的,但是我们有HashSets的全部原因是我们遇到这种最坏的情况,其概率非常非常低,而且它通常比堆或者(自平衡)TreeSet的保证nlogn快得多,或者保证n^2未排序的列表。