码迷,mamicode.com
首页 > 编程语言 > 详细

数据结构与算法--------哈希表

时间:2016-12-03 14:38:25      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:扩展   时间   实现   span   支持   其他   操作   方法   遍历   

1.概述:

  • 数据结构:哈希表
  • 插入时间复杂度:O(1)
  • 删除时间复杂度:O(1)
  • 查找时间复杂度:
  • 优点:
    • 哈希表的操作速度比较,如插入、删除的时间复杂度都是常量O(1),可以在一秒内查找上千条记录
    • 哈希表的编程实现相对容易
  • 缺点:  
    • 哈希表不能被填满。哈希表被基本填满的时候,性能会急剧下降,所以为了保证性能,你一定要确保你哈希表的容量的大小是足够的
    • 哈希表到其他哈希表的数据迁移过程是一个费时的过程(如定期将数据迁移到更大的哈希表中去会很费时)。如果一开始没有预估好你的数据量的大小,初始时创建的用于存放相应数据的哈希表太小,实际使用过程中就需要创建更大的哈希表,并且定期地将数据转移到更大的哈希表中去,这是一个非常费时的过程。
    • 使用哈希表之前最好能提前预测数据量大小。哈希表是基于数组的,一旦创建,后面想要再进行扩展是非常难的,所以使用哈希表的前提是你可以提前预测你的数据量的大小,否则如果没能准确预估数据量大小,导致实际运行过程中你的哈希表被基本填满,那么你的哈希表的性能会急剧下降。更糟糕的是,如果你没能准确预估数据量大小,后期会极有可能需要将你的数据从当前哈希表迁移到更大的哈希表中,这个过程会很慢。
    • 哈希表中的数据不支持顺序遍历。没有简便的方法来以任何一种顺序(如从小到大)遍历哈希表中的数据,如果需要顺序遍历相应的数据,就不能选用哈希表,只能选用其他的数据结构。
  • 哈希表的适用场景:
    • 当  可以准确预估数据量的大小
    • 并且   不需要顺序遍历(如从小到大)哈希表中数据 时
    • 哈希表在速度和易用性方面是其他数据结构无法比拟的

数据结构与算法--------哈希表

标签:扩展   时间   实现   span   支持   其他   操作   方法   遍历   

原文地址:http://www.cnblogs.com/lxrm/p/6128330.html

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