顺序表的时间复杂度分析

1.顺序表的初始化中函数的应用:

L.elem=new ElemType[MAIXSIZE];//为顺序表分配一个大小为MAIXSIZE的数组空间。

运用了C++中的new函数进行动态地址分配。

一般分配模式为:未知量=new 类型名 (列表初值)//列表初值可无。

例:int*p= new int;或int *p=new int (10);

每个new 都要对应一个delete,来释放分配的内存;

L.elem=(int *)malloc(number *size of[MAIXSIZE]) ;//为顺序表分配一个大小为MAIXSIZE的数组空间。

运用了C中的malloc 函数进行动态地址分配。

一般分配模式为:未知量=(类型名)malloc (number*size of(类型));

每一个malloc都要定义一个free 来释放空间。

2.取值

基本语句:e=L.elem[i-1];

时间复杂度为O(1);

3.查找

基本语句:

for(i=0;i<L.length;i++)

if(L.elem[i]==e)return i+1;

ASL=\frac{1}{n}\sum_{i=1}^{n}i= \frac{n+1}{2},省略n的系数1/2,后得平均时间复杂度为O(n);

4.插入

基本语句:

for ( j=L.length -1;j>=i-1;j--)

L.elem[j+1]=L.elem[j];

共有(n+1)个位置可以插入,概率为\frac{1}{n+1},则期望值为E=\frac{1}{n+1}\sum_{i=1}^{n+1}\left ( n-i+1 \right ),结果为n/2。n的系数为1/2,省略系数则时间按复杂度为O(n);

5.删除

基本语句:

for(j=1;j<=L.length-1;j++)

   L.elem[j-1]=L.elem[j];

假设删除第i个元素,则移动n-i个元素。期望为:E=\sum_{i=1}^{n}\frac{1}{n}\left ( n-i \right ),共有n个元素,概率为1/n,结果为n-1/2,取数量级为时间复杂度O(n)。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值