【发布时间】:2018-12-25 11:50:23
【问题描述】:
数组中插入和删除操作的最坏情况运行时间是 O(n),因为我们可能需要进行 n 次移位。
链表也是如此,如果我们想插入或删除第 i 个元素,我们可能需要遍历整个链表才能到达预期插入/删除的位置。所以链表也需要 O(n) 时间。
那么为什么在执行插入/删除密集操作时首选链表。
【问题讨论】:
-
O(1) 的链表插入操作假设我们停留在需要的节点。
-
但实际情况并非如此。我们总是必须遍历本质上再次使其成为 O(n) 的元素。
-
搜索需要的地方和插入/删除是不同的操作。是的,它们经常一起使用,但一些算法利用单列表遍历和多次插入等。请注意,由于您的原因,LL 的实际使用相当罕见。
-
根据 Stroustrup 的说法,向量比链表快,因为时间主要是搜索而不是移位:isocpp.org/blog/2014/06/stroustrup-lists
-
你有什么数据来支持链表是首选插入/删除密集操作的断言?
标签: arrays algorithm data-structures linked-list big-o