这是一个非常朴素的问题,但我找不到明确的讨论。大家都同意,对于只有10个元素的映射容器来说,使用哈希是过度杀伤。使用有序映射会更快。对于一百个、一千个等等,映射应该按照logN(N=映射中键值对的数量)扩展。所以对于一千个,需要三倍的时间;一百万个,需要六倍的时间;一百亿个,需要九倍的时间。
当然,我们相信,对于精心设计的哈希容器,可以在O(1)(常数)的时间内搜索,而排序容器需要O(logN)的时间。但隐含的常数是多少?哈希映射何时会被排序映射超越?特别是,如果键是整数,则键搜索的开销很小,因此映射中的常数将很小。
尽管如此,几乎所有人都认为哈希容器更快。进行了许多实时测试。
这是怎么回事?
当然,我们相信,对于精心设计的哈希容器,可以在O(1)(常数)的时间内搜索,而排序容器需要O(logN)的时间。但隐含的常数是多少?哈希映射何时会被排序映射超越?特别是,如果键是整数,则键搜索的开销很小,因此映射中的常数将很小。
尽管如此,几乎所有人都认为哈希容器更快。进行了许多实时测试。
这是怎么回事?