哈希表
哈希表
直接寻址表

通过键值对存储数据(key,value)
U为key的域:即key可能出现的所有值
K为key的值:如我们想存储键值对的key值为2,3,5,8
存储方式:将键值对(2,value)。。。插入对应的T中,查找删除时,直接根据key值查找删除,时间复杂度为O(1)
优点
- 时间复杂度低
- 查找删除简单
缺点
-
当U很大而K很小时,占用大量内存且大量空间被浪费
-
无法处理关键字为非数字的情况
哈希表
由一个哈希函数h(key)和一个直接寻址表组成,哈希函数对键值对(key,value)中的key进行处理,通过h(key)可以得到对应的下标。
如:一个长度为7的哈希表,存储的键值对为(7,14)(5,12)(9,100),哈希函数为h(key)=key%7,处理后得到(7,14)存储在表中的第一个位置,(5,12)存储在表中的第六个位置,(9,100)存储在表中的第四个位置
缺点(哈希冲突)
当h(key)返回的值重复时,如7%7=0,14%7=0,会发生哈希冲突,两个数都应该存在第一个位置
哈希冲突的解决方式
开放寻址法
当发生哈希冲突时,将第二个值向后探查,存储到空的位置中,如7%7=0,14%7=0,若第二个位置为空,则放置14在第二个位置上
拉链法
寻址表中存储的不再是一个值,而是一个链表,解决冲突问题

浙公网安备 33010602011771号