考虑一个数组与哈希表,其中的键只是列表的整数索引。为什么使用数组来实现“列表”而不是哈希表?
他们的平均情况下插入,查找和删除大O界限都是不变的时间。我知道你可能会在数组中获得缓存局部性的低级别胜利,并且散列表操作有一个边际(大多数常量)的开销,但是hashtables让你免费获得稀疏性,在某些应用中这是一个巨大的胜利。
我错过了什么其他重要的(或小的)对比?
背景:在面试编程候选人时,有时会对此进行讨论。通常情况下,“你将如何在JS VM中实现Javascript数组类型?”对于数据密集的数据,我与本地数组并存,但我想有比直觉更好的推理,即“看起来不太像过度杀伤”。
这是正确的答案。 – slebetman 2010-02-16 16:53:57
看着它有趣的方式。谢谢。好吧,基本上,除了我认为的之外,没有其他显而易见的区别 - 实际上,这种情况下的散列表是一个具有更多开销和自由稀疏性的数组,可用于“更适合您的数据/场景”类型办法。 – 2010-02-17 03:30:58