基于一种数据结构:
散列表(Hash Table),又称作哈希表
特点:数据元素的关键字与其存储地址直接相关
其实这个散列表也是基于数组实现的
加入19对13取余
加入再次插入1的话,塞不进去
数据元素不会直接存放到数组中
而是通过指针
这种方法也叫做拉链法(也叫做链接法,链地址法)来处理冲突
将如何基于这个数据结构进行查找操作
在序号为1的链表中查找
查找长度为3
链表的头指针是空的(查找长度为0)
查找长度定义:在查找运算中需要对比关键字的次数(不包括开始的指针判断)
我们还可以算出平均查找长度:
效率非常高,比顺序查找高多了
如果没有同义词的话:
最理想情况:散列查找的时间复杂度可以达到O(1)
一共就这么多情况,这13中情况等可能发生
装填因子会影响查找效率
散列表越短,发生冲突的情况越多
那么为了效率更高
常见的散列函数
设计目标:让不同关键字的冲突尽可能地少
与质数相反的概念就是合数
也可以直接使用直接定址法
但是并不实际,空间复杂度太高