数据结构复习之线性表(顺序表--插入、删除)

顺序表的基本操作——插入
用存储位置的相邻来体现数据元素之间的逻辑关系
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 =1/(n+1)
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 =n(n+1)/2\cdot 1/n+1=n/2  
→     平均时间复杂度 = 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 =
1/n
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 = n(n-1)/2\cdot 1/n=(n-1)/2
平均时间复杂度 = O(n)
总结一下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值