关于哈希图的时间复杂性的问题



这不是一个代码问题,我只是试图理解哈希图和时间复杂度的概念。

好吧,我想我知道hashMaps/sets等是如何工作的,我想我理解为什么HashMaps.get有一个恒定的时间,但是当我们有一个非常大的hashMap时,存储值的指示应该重叠。当 2 个哈希码解析为同一索引时,它们将存储在此索引的 LinkList 中,对吗?

难道所有元素都作为链接列表存储在一个索引中吗?现在不应该在O(n(中最坏的情况下运行HashMap.get。

是的,HashMap的最坏情况时间复杂度是 O(n(,其中n是一个存储桶中存储的元素数。最坏的情况是当HashMap的所有n元素都存储在一个存储桶中时。

但是,如果为每个存储桶实施二叉搜索,则可以改进这一点。在这种情况下,最坏情况的时间复杂度将被O(log(n)),因为binary search tree用于存储元素而不是doubly linked list

最新更新