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

Posted lxrm的博客空间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法--------哈希表相关的知识,希望对你有一定的参考价值。

1.概述:

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

以上是关于数据结构与算法--------哈希表的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法实例(哈希表实现)

数据结构与算法——哈希函数与哈希表等

算法与数据结构之哈希表

48 容器——HashMap底层:哈希表结构与哈希算法

哈希表(Hash Table)与哈希算法

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