顺序表的复杂度
已知顺序表L的表长为n,现要对顺序表L进行增删查改操作,分析相关操作的复杂度
插入
时间复杂度T(n)=O(n)
证明:分类讨论
记插入位置为 i,移动次数为 x
最好情况:原表长为n,在表尾插入,移动次数为0次,插入后表长变为n+1
最坏情况:原表长为n,在表头插入,移动次数为n次【将原表中n个数据元素依次向后移动1位,故移动了n次】
平均情况:ASL
i+x=n+1,解得x=n-i+1,插入位置有n+1种可能,
删除
时间复杂度T(n)=O(n)
证明:分类讨论
记删除位置为 i,移动次数为 x
最好情况:原表长为n,在表尾删除,移动次数为0次,删除后表长变为n-1
最坏情况:原表长为n,在表头删除,移动次数为n-1次【将原表中第1个数据元素后面的元素依次向前移动1位,故移动了n-1次】
平均情况:
查找
时间复杂度T(n)=O(n)
证明:分类讨论
记查找位置为 i,移动次数为 x
最好情况:原表长为n,在表尾查找,移动次数为n次【从表头到表位,依次遍历】
最坏情况:原表长为n,在表头查找,移动次数为1次
平均情况:
修改
时间复杂度T(n)=O(1) 按下标修改
时间复杂度T(n)=O(n) 按值修改
同理,先找到在修改!