基于一种数据结构:
 散列表(Hash Table),又称作哈希表
特点:数据元素的关键字与其存储地址直接相关

 
其实这个散列表也是基于数组实现的
加入19对13取余

 
 
加入再次插入1的话,塞不进去

 
 
数据元素不会直接存放到数组中
而是通过指针
 
这种方法也叫做拉链法(也叫做链接法,链地址法)来处理冲突
将如何基于这个数据结构进行查找操作

 
 
在序号为1的链表中查找
查找长度为3

 
 
链表的头指针是空的(查找长度为0)
查找长度定义:在查找运算中需要对比关键字的次数(不包括开始的指针判断)

我们还可以算出平均查找长度:
效率非常高,比顺序查找高多了
如果没有同义词的话:

最理想情况:散列查找的时间复杂度可以达到O(1)

一共就这么多情况,这13中情况等可能发生
装填因子会影响查找效率
散列表越短,发生冲突的情况越多
那么为了效率更高

常见的散列函数

设计目标:让不同关键字的冲突尽可能地少

 
与质数相反的概念就是合数


 
 


 
 
也可以直接使用直接定址法

但是并不实际,空间复杂度太高












![[计算机入门]了解键盘](https://img-blog.csdnimg.cn/e5decd004efc46b498f0bc4d9fbae40c.png)







