概述
简单查找的时间复杂度是O(n),二分查找的时间复杂度是O(logn),如果希望时间复杂度降为O(1),则可以使用散列表。
散列函数
散列函数需要满足的条件:
- 相同的输入映射到相同的数字
- 不同的输入映射到不同的数字
假设散列函数为f(x),将商品的价格用散列表存储,设目前数组arr的长度为5:
- f(Apple)=3,则Apple在数组中的索引为3,,其中Apple的价格为5.6
- f(Milk)=3,则Milk在数组中的索引为0,,其中Milk的价格为3.2
- f(Avocado)=4,则Avocado在数组中的索引为4,,其中Avocado的价格为6.5
则该数组的内容为:
0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
3.2 | 5.6 | 6.5 | ||
由上可以看出,散列函数和数组创建了一种被称为散列表(hash table)的数据结构。 |
python实现
menu = dict()
menu["Apple"] = 5.6
menu["Milk"] = 3.2
menu["Avocado"] = 6.5