【发布时间】:2010-10-24 20:21:53
【问题描述】:
根据Wikipedia article on linked lists,在链表中间插入被认为是O(1)。我认为这将是O(n)。您不需要找到可能在列表末尾附近的节点吗?
这个分析是否没有说明节点操作的发现(尽管它是必需的)而只是插入本身?
编辑:
与数组相比,链表有几个优点。在列表的特定点插入元素是一个常数时间操作,而在数组中插入可能需要移动一半或更多元素。
以上陈述对我来说有点误导。如果我错了,请纠正我,但我认为结论应该是:
数组:
- 找到插入/删除点 O(1)
- 执行插入/删除 O(n)
链接列表:
- 找到插入/删除点 O(n)
- 执行插入/删除 O(1)
我认为唯一不必找到位置的情况是,如果你保留某种指向它的指针(在某些情况下,就像头部和尾部一样)。所以我们不能直截了当地说链表在插入/删除选项方面总是优于数组。
【问题讨论】:
标签: linked-list big-o