5.4.1 填装因子
散列表的填装因子很容易计算。
假设你要在散列表中存储100种商品的价格,而该散列表包含100个位置。那么在最佳情况下,每个商品都将有自己的位置。
你可能在想,调整散列表长度的工作需要很长时间!你说得没错,调整长度的开销很大,因此你不会希望频繁地这样做。但平均而言,即便考虑到调整长度所需的时间,散列表操作所需的时间也为O(1)。
5.4.2 良好的散列函数
良好的散列函数让数组中的值呈均匀分布。
5.5 小结
你几乎根本不用自己去实现散列表,因为你使用的编程语言提供了散列表实现。你可使用Python提供的散列表,并假定能够获得平均情况下的性能:常量时间。
散列表是一种功能强大的数据结构,其操作速度快,还能让你以不同的方式建立数据模型。你可能很快会发现自己经常在使用它。
-
你可以结合散列函数和数组来创建散列表。
-
冲突很糟糕,你应使用可以最大限度减少冲突的散列函数。
-
散列表的查找、插入和删除速度都非常快。
-
散列表适合用于模拟映射关系。
-
一旦填装因子超过0.7,就该调整散列表的长度。
-
散列表可用于缓存数据(例如,在Web服务器上)。
-
散列表非常适合用于防止重复。