在此备忘单中,访问哈希表的平均时间复杂度列为N / A.
我很好奇为什么。由于散列表主要是带有循环的数学,我认为它将像其他操作一样是O(1)...搜索,插入,删除。
答案 0 :(得分:1)
在该表中,访问'列指的是按索引访问给定元素的时间。这就是为什么在数组中,访问被描述为O(1) - 返回数组的第i个元素是一个恒定时间操作。类似地,对于链接列表,它是一个O(n)操作 - 如果你有一个链表,并希望索引为i的项目,你需要从链接跳转到链接,i次。
现在,在哈希表(字典,哈希图等)中,我们没有谈论索引i的'元素。 - 我们根本不谈索引!这就是这个表的含义,即将NA作为“访问”的值。用于哈希表。我们根本不做(在这里使用的意义上)'访问'对哈希映射的操作。
也许一个明确的例子可能有所帮助。
myLinkedList = ['red','blue','orange']
myArray = ['black','white','green','yellow']
myHashMap = {'address':'10 wall st', 'gender':'male'}'
在前两个示例中,我们可以访问给定索引处的元素。
即:
myLinkedList[1] == 'blue'
和myArray[0] == 'black'
但我们无法通过索引访问哈希映射。
在此实例中未定义 myHashMap[0]
!所以'访问'对于哈希映射是NA。
但是,在此上下文中,我们具有等效操作:按键搜索。
即:
myHashMap['address'] == '10 wall st'
O(1)操作。
你是否因为你不知道数据结构内部问题而提出这个问题(在这种情况下,要学习它们,这是值得的),或者如果你只是对那个备忘单上的术语感到困惑,我希望这个答案有所帮助。