【数据结构笔记41】散列表/哈希表的性能分享

本次笔记内容:
11.4 散列表的性能分析

平均查找长度

平均查找长度(ASL)用来度量散列表查找效率:成功、不成功两种指标。

关键词的比较次数,取决于产生冲突的多少。

影响冲突产生的三个因素

(1)散列函数是否均匀;
(2)处理冲突的方法;
(3)散列表的装填因子α。

不同方法的性能

线性探测法查找性能

【数据结构笔记41】散列表/哈希表的性能分享

线性探测查找性能期望公式如上。

平方探测法和双散列探测法的查找性能

【数据结构笔记41】散列表/哈希表的性能分享

平方探测法和双散列探测法的查找性能性能如上。

期望探测次数与装填因子α的关系

【数据结构笔记41】散列表/哈希表的性能分享

如上图,合理的最大装载因子α应该不超过0.85。

分离链接法的查找性能

【数据结构笔记41】散列表/哈希表的性能分享

如上图,分离链接法的装载因子有可能超过1。

总结

【数据结构笔记41】散列表/哈希表的性能分享

如上图,散列法与关键字空间大小n无关,适于关键字直接比较的计算量大的问题;但散列法是一个以空间换时间的方法,并且不适于范围查找。

开发地址法:

  • 是一个数组,存储效率高,随机查找;
  • 但是有“聚集”现象。

分离链接法:

  • 组合运用顺序存储和链式存储,链表部分的存储效率和查找效率都比较低;
  • 关键字删除不需要“懒惰删除法”;
  • 装载因子大时,效率可能会较低。