【发布时间】:2015-12-01 21:19:15
【问题描述】:
想来想去,我觉得插入和搜索任何数据结构的时间复杂度应该是一样的,因为要插入,首先要搜索到要插入的位置,然后再插入。
根据这里:http://bigocheatsheet.com/,对于链表,搜索是线性时间但插入是常数时间。我明白搜索是如何线性的(从前面开始,然后继续遍历链表上的节点,直到找到要搜索的内容),但是插入恒定时间如何?
假设我有这个链表:
1 -> 5 -> 8 -> 10 -> 8
我想在数字 8 之后插入数字 2,那么我是否必须先搜索数字 8(搜索是线性时间),然后再多走 2 步插入它(所以,插入仍然是线性时间?)?
#insert y after x in python
def insert_after(x, y):
search_for(y)
y.next = x.next
x.next = y
编辑:即使对于双向链表,它是否仍然必须先搜索节点(这是线性时间),然后插入?
【问题讨论】:
-
bigocheatsheet.com 恰好是我的首选网站,也适用于运行时的复杂性。
标签: time-complexity singly-linked-list