线性表的顺序存储和链式存储差异

线性表的顺序存储和链式存储方式在存读数据以及插入删除数据时,时间复杂度不同。

顺序存储的典型例子为数组,链式存储的典型例子为单链表。众所周知,当读取数据较为频繁时,我们选择顺序存储方式,当插入和删除操作较为频繁时,我们选择链式存储方式。接下来,我们将分析这样做的原因:

1.顺序存储:

1)在读取数据时,读取任意位置i的元素,都可以用a[i]获得,因此,时间复杂度为o(1).

2)在插入和删除数据时,不可能总是处理最后一个元素,对于其他任意位置i对应元素的处理,若是插入,需要将i之后的元素从最后一个元素开始均向后平移一个单位,若是删除,需要将i之后的元素从i+1个元素开始均向前平移一个单位。因此,时间复杂度为o(n).

2.链式存储:

1)在读取数据时,读取任意位置i的元素,均需从a1开始往后遍历,直至ai,因此,时间复杂度为o(n).

2)在插入和删除数据时,也需要从a1开始往后遍历,直至ai处,因此时间复杂度也为o(n).

那么问题来了,毫无疑问,从时间复杂度上来看,读取数据选择时间复杂度为o(1)的顺序存储方式,但是,插入和删除操作下,两种存储方式的时间复杂度均为o(n),为什么要选择链式存储结构呢?

这主要是因为,当在某一个位置连续插入或删除多个数据时,对于顺醋存储结构而言,每次操作的时间复杂度均为o(n),而对于链式存储结构而言,只有第一次时间复杂度为o(n),之后的每次操作时间复杂度均为o(1),因此,我们说,当频繁的进行插入和删除操作时,选择链式存储结构。

除此之外,值得一提的是,顺序存储结构有以下的优缺点:

优点:

1)没有因为要表示元素之间的逻辑关系而增加额外的存储空间。

2)快速的存读表中的任意位置元素。

缺点:

1)插入和删除需要移动大量的元素。

2)线性表长度变化较大时,难以确定存储空间的容量。

3)容易造成存储空间的碎片。



                

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值