顺序表的基本操作——插入
用存储位置的相邻来体现数据元素之间的逻辑关系
ListInsert(&L,i,e)
:
插入
操作。在表
L
中的第
i
个位置上插入指定元素
e
。
定义
用静态分配方式实现的顺序表
插入操作的时间复杂度
最好情况:新元素插入到表尾,不需要移动元素
i = n+1
,循环
0
次;
最好时间复杂度
= O(1)
最坏情况:新元素插入到表头,需要将原有的
n
个元素全都向后移动
i = 1
,循环
n
次;
最坏时间复杂度
= O(n);
平均情况:假设新元素插入到任何一个位置的概率相同,即
i = 1,2,3, … , length+1
的概率都是
p =
i=1, 循环 n
次;
i=2
时,循环
n-1
次;
i=3
,循环
n-2
次
…… i =n+1
时,循环
0
次
问题规模
n = L.length
(表长)
平均循环次数
= np + (n-1)p + (n-2)p + …… + 1
⋅
p =
→ 平均时间复杂度
= O(n)
顺序表的基本操作
——
删除
ListDelete(&L,i,&e)
:删除操作。删除表
L
中第
i
个位置的元素, 并用e
返回删除元素的值。
删除操作的时间复杂度
最好情况:删除表尾元素,不需要移动其他元素
i = n
,循环
0
次;
最好时间复杂度
= O(1)
最坏情况:删除表头元素,需要将后续的
n-1
个元素全都向前移动
i = 1
,循环
n-1
次;
最坏时间复杂度
= O(n);
平均情况:假设删除任何一个元素的概率相同,即
i = 1,2,3, … , length
的概率都是
p =
i = 1
,循环
n-1
次;
i=2
时,循环
n-2
次;
i=3
,循环
n-3
次
…… i =n
时,循环
0
次
问题规模
n = L.length
(表长)
平均循环次数
= (n-1)p + (n-2)p + …… + 1
⋅
p =
平均时间复杂度
= O(n)
总结一下: