龙空技术网

算法之「哈希查找」

coder人生 205

前言:

如今各位老铁们对“哈希查找算法流程图”大致比较珍视,你们都需要分析一些“哈希查找算法流程图”的相关文章。那么小编也在网上搜集了一些关于“哈希查找算法流程图””的相关内容,希望咱们能喜欢,大家一起来学习一下吧!

哈希查找需要一张哈希表,哈希表又称为散列法,是高效实现字典的方法,查找速度在O(1),这说明无论你需要查找的数据量有多大,他都能在常数时间内找到。

哈希表几个重要的概念:

a.负载因子:a = n / m,(n为键的个数,m为单元格个数),负载因子越大,发生冲突的概率则越大。

b.哈希函数:

哈希函数是指你把一样东西存进去之前,先对它的key进行一次转换,然后再通过转换出来的值作为key,把你要存的东西存在表上。

c.碰撞解决机制

1.如果两样东西通过哈希函数算出来的key相同怎么办?东西怎么存?这个时候就是碰撞检测机制派上用场的时候

2.开散列法,也称为分离链法,即相当于在数组中每个格子是一个链表,只要发生冲突就把后来的value拼接在先来的value后面形成一条链。

3.闭散列法,也称为开式寻址法

a.再哈希,使用其他的哈希函数对key再次计算,直到没有发生冲突为止(计算量增加,不推荐)

b.线性勘测法,通过一个公式,算出下一个地址(存储连续的)

c.二次探测法,生成的地址不是连续的,而是跳跃的

可以这么说,哈希函数设计得越好,冲突越少,哈希表的效率就越高。

标签: #哈希查找算法流程图