码迷,mamicode.com
首页 > 其他好文 > 详细

How can worst case time complexity of Hashtable be O(n^2)

时间:2015-08-28 13:12:51      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

Hash tables are O(1) average and amortized case complexity, however is suffers from O(n)worst case time complexity. [And I think this is where your confusion is]

Hash tables suffer from O(n) worst time complexity due to two reasons:

  1. If too many elements were hashed into the same key: looking inside this key may take O(n)time.
  2. Once a hash table has passed its load balance - it has to rehash [create a new bigger table, and re-insert each element to the table].

However, it is said to be O(1) average and amortized case because:

  1. It is very rare that many items will be hashed to the same key [if you chose a good hash function and you don‘t have too big load balance.
  2. The rehash operation, which is O(n), can at most happen after n/2 ops, which are all assumedO(1): Thus when you sum the average time per op, you get : (n*O(1) + O(n)) / n) = O(1)

Note because of the rehashing issue - a realtime applications and applications that need low latency - should not use a hash table as their data structure.

EDIT: Annother issue with hash tables: cache 
Another issue where you might see a performance loss in large hash tables is due to cache performance. Hash Tables suffer from bad cache performance, and thus for large collection - the access time might take longer, since you need to reload the relevant part of the table from the memory back into the cache.

How can worst case time complexity of Hashtable be O(n^2)

标签:

原文地址:http://www.cnblogs.com/mj-w/p/4766142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!