散列表
什么是散列表:可以看成数组和链表的结合体。
散列函数
散列函数“将输入映射到数字”。python中的字典
特点:
1.它必须是一致的。例如,假设你输入apple时得到的是4,那么每次输入apple时,得到的都 必须为4。如果不是这样,散列表将毫无用处。
2.它应将不同的输入映射到不同的数字。例如,如果一个散列函数不管输入是什么都返回1, 它就不是好的散列函数。最理想的情况是,将不同的输入映射到不同的数字。
散列表的应用
-
将散列表用于查找
电话簿:联系人与号码对应
DNS解析:域名与ip的对应 -
防止重复
记录投票结果 -
缓存
将页面URL映射到页面数据
性能
一个散列表具有好的性能必然冲突产生的概率会控制在一定范围内。冲突的产生是由于两个不同的元素通过散列函数映射到了内存的相同位置。
散列表性能的好坏与两个因素有关系:
较低的填装因子;
良好的散列函数。
填装因子:
填装因子越低,发生冲突的可能性越小, 散列表的性能越高。一个不错的经验规则是:一旦填装因子大于0.7,就调整散列表的长度。
散列函数