哈希表

哈希表

通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。


散列函数(映射函数)

满足计算简单分布均匀的两大原则

五大方法

1. 直接定址法:(像利用数组下标对照着定位放)  -- 计算简单但是分布可能不均匀
2. 数字分析法:(事先知道数据分布)  -- 比如电话号码/身份证号码只需要考虑后几位存放问题
3. 平方取中法:(将所存的数字平方之后取最中间的位)  -- 比如17*17=289 放到数组下标为8的位置(会冲突)
4. 取余法:(将所存的数字取余数)  -- 比如17%10=7放到数组下标为7的位置(会冲突)
5. 随机数法:(将所存的数字random()方法随便放)  --不建议使用(随便放进去的不好取出来)

散列冲突的解决方案

两大方法

1. 开放地址法
    1.1 线性探测法  -- 有冲突的就 依次向后找空位放
    1.2 二次探测法  -- 有冲突的就 按照1的平方 2的平方 ..找空位放
    1.3 再哈希法    -- 使用两个散列函数存放 
2. 链地址法(HashMap底层)
    数组+链表的形式:(在数组下标对应的数组相当于建立一个链表,把符合相应条件的按照顺序指向)

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 哈希表
  2. 2. 散列函数(映射函数)
    1. 2.1. 五大方法
  3. 3. 散列冲突的解决方案
    1. 3.1. 两大方法
,