散列表,也叫哈希表。特点:查找速度快。
要点:散列表的实现、冲突和散列函数。
5.1散列函数
要求:
- 散列函数的输入、输出必须是一致的,即固定的输入必须对应固定的输出值;
- 散列函数的输入、输出最好的唯一的,也即理想情况下映射是唯一的。
def check_voter(name): if voted.get(name): print ("kick them out") else: voted[name] = True print ("let them vote!")
上面的代码只是通过字典来说明散列表的用法。
5.2应用
散列表常用于缓存、DNS解析等。
5.3冲突
如果两个键映射到同一个位置,通过存储链表解决。
5.4性能
散列表平均情况为O(1),最糟情况为O(n)。
良好的散列函数使装填因子总小于1。
总结:
- 可结合散列函数和数组创建散列表
- 应使用可以最大限度减少冲突的散列函数
- 散列表的查找、插入和删除速度非常快
- 散列表适合用于仿真映射关系
- 一旦装填因子超过0.7,就该调整散列表的长度
- 散列表可用于缓存数据
- 散列表非常适合用于防止重复
示例:C语言实现的数据结构之------哈希表
https://blog.csdn.net/smstong/article/details/51145786