Big-O用于2维数组和链接列表

时间:2015-06-08 08:02:55

标签: c++ c arrays linked-list big-o

我使用9个链接列表制作了游戏,另外1个链接列表获取了其他9个链接列表的所有地址。因此,使用链表就像二维数组。

我正在尝试计算Big-O我的数据结构适合并且比2维数组更好但是我关注三件事。

  1. 存在称为[10] [10]的二维数组,当我插入[5] [5] = 1时它是否为O(1)?

  2. 链接列表中存在N个节点,那么为了找到最终节点是O(N)?

  3. 正如我之前所说的那样,我制作了一个看起来像的链表    二维数组和每个链表有N个节点。    如果我找到每个链表的最终节点并将其移动到每个头。是O(N ^ 2)?

2 个答案:

答案 0 :(得分:0)

  

2维数组称为[10] [10]存在,当我插入[5] [5] = 1是否为O(1)?

不,它是 O(行索引+列索引),因为您需要通过遍历找到一个链表,然后通过另一遍遍找到其中的节点。

  

链接列表存在N个节点,那么为了找到最终节点是O(N)?

这取决于实施。有些链接到最终节点,然后是 O(1)。单链表确实是 O(n)

  

正如我之前所说,我制作了一个看似二维数组的链表,每个链表都有N个节点。如果我找到每个链表的最终节点并将其移动到每个头。是O(N ^ 2)?

这取决于前一点: O(n) O(n ^ 2)

答案 1 :(得分:-1)

你对第一个问题是正确的。 关于第二个你也是对的。 现在,大约第三个。您有9个链接列表。访问链表的最终节点是O(n)。因此,访问您所拥有的9个链接列表中的每一个的最终节点仍然是O(n),因为您有一定数量的链接列表。