文章目录
一、前言
谈起哈希表,学过数据结构的同学,应该都已经耳熟能详了,因为太基础所以一直没有单独拿出来讲,然而 广度优先搜索 和 动态规划 里面都涉及到了状态哈希,所以还是有必要拿出来讲一下的。所谓的 状态 到底是一个什么概念,为什么要对状态进行 哈希。希望读者看完本章内容,能够有一个大概的概念,能对后续要讲到的 广度优先搜索 以及 状态压缩动态规划 起到一定的铺垫作用。
虽然,我曾经一度认为自己对哈希表的理解已经很透彻了,但是今天我在总结这篇文章的时候,突然领悟了几个之前比较模糊的概念,而且就在那一瞬间,犹如醍醐灌顶,茅塞顿开,这种感觉实在是太棒了!
二、哈希表
1、哈希表概念
- 哈希表(Hash table)的初衷是为了将关键字值 (key - value) 映射到数组中的某个位置,这样就能够通过数组下标访问该数据,省去了遍历整个数据结构的过程,从而提高了数据的查找速度,查找的平均期望时间复杂度是 O ( 1 ) O(1)
本文详细介绍了哈希表的概念,包括哈希数组、关键字、哈希函数和值,以及简单下标哈希和散列哈希的原理与实现。文章还探讨了哈希冲突的解决方法,如链地址法、开放寻址法,并讨论了负载因子和rehash策略。此外,还介绍了字符串哈希的计算方法,包括B进制、取模、自然溢出和双哈希等。最后,文章列举了哈希表在排序、多元方程解数计算以及动态规划和广度优先搜索中的应用案例,展示了哈希表的实用性。

订阅专栏 解锁全文
6万+

被折叠的 条评论
为什么被折叠?



