Computer science 为什么这里没有为哈希表定义大O?

Computer science 为什么这里没有为哈希表定义大O?,computer-science,Computer Science,在本备忘单中,访问哈希表的平均时间复杂度列为N/a 我很好奇为什么。由于散列表基本上是数学的,没有外循环,所以我假设它与其他操作一样是O(1)。。。搜索、插入、删除 在该表中,“访问”列按索引表示访问给定元素的时间。这就是为什么在数组中,访问被描述为O(1)——返回数组的第i个元素是一个常数时间操作。类似地,对于链表,这是一个O(n)操作——如果您有一个链表,并且希望该项位于索引i处,则需要从一个链接跳到另一个链接,i次 现在,在哈希表(字典、hashmap等)中,我们不谈论“索引i处的元素”-

在本备忘单中,访问哈希表的平均时间复杂度列为N/a

我很好奇为什么。由于散列表基本上是数学的,没有外循环,所以我假设它与其他操作一样是O(1)。。。搜索、插入、删除


在该表中,“访问”列按索引表示访问给定元素的时间。这就是为什么在数组中,访问被描述为O(1)——返回数组的第i个元素是一个常数时间操作。类似地,对于链表,这是一个O(n)操作——如果您有一个链表,并且希望该项位于索引i处,则需要从一个链接跳到另一个链接,i次

现在,在哈希表(字典、hashmap等)中,我们不谈论“索引i处的元素”-我们根本不谈论索引!这就是这个表的意思,它将NA作为哈希表的“访问”值。我们只是在hashmaps上不做(这里使用的)访问操作

也许一个明确的例子会有所帮助

myLinkedList=[“红色”、“蓝色”、“橙色”]

myArray=[“黑色”、“白色”、“绿色”、“黄色”]

myHashMap={'address':'10 wall st','gender':'male'}'

在前两个示例中,我们可以访问给定索引处的元素

即:

myLinkedList[1]=“蓝色”
myArray[0]=“黑色”

但是我们不能通过索引访问hashmaps

myHashMap[0]
未在此实例中定义!所以“访问”是对hashmaps的不适用

然而,在此上下文中,我们有一个等价的操作:按键搜索

即:

myHashMap['address']=='10 wall st'

O(1)操作


无论你问这个问题是因为你不了解数据结构的内部结构(在这种情况下,一定要学习它们,这是值得的),还是如果你只是被那张备忘单上的术语弄糊涂了,我希望这个答案会有所帮助。

在那张表中,“访问”列是指按索引访问给定元素的时间。这就是为什么在数组中,访问被描述为O(1)——返回数组的第i个元素是一个常数时间操作。类似地,对于链表,这是一个O(n)操作——如果您有一个链表,并且希望该项位于索引i处,则需要从一个链接跳到另一个链接,i次

现在,在哈希表(字典、hashmap等)中,我们不谈论“索引i处的元素”-我们根本不谈论索引!这就是这个表的意思,它将NA作为哈希表的“访问”值。我们只是在hashmaps上不做(这里使用的)访问操作

也许一个明确的例子会有所帮助

myLinkedList=[“红色”、“蓝色”、“橙色”]

myArray=[“黑色”、“白色”、“绿色”、“黄色”]

myHashMap={'address':'10 wall st','gender':'male'}'

在前两个示例中,我们可以访问给定索引处的元素

即:

myLinkedList[1]=“蓝色”
myArray[0]=“黑色”

但是我们不能通过索引访问hashmaps

myHashMap[0]
未在此实例中定义!所以“访问”是对hashmaps的不适用

然而,在此上下文中,我们有一个等价的操作:按键搜索

即:

myHashMap['address']=='10 wall st'

O(1)操作


无论你问这个问题是因为你不知道数据结构的内部结构(在这种情况下,一定要学习它们,这是值得的),还是如果你只是被那张备忘单上的术语弄糊涂了,我希望这个答案有帮助。

缺少到备忘单的链接。您应该在此处尝试:缺少到备忘单的链接。您应该在此处尝试:我们通常按索引访问堆栈或队列项目吗?我想不会,但它确实有一个大O的访问。虽然我也看到了如何将它们视为线性的。我们通常是通过索引访问堆栈或队列项目吗?我想不会,但它确实有一个大O的访问。虽然我也明白了这些是如何被视为线性的。