顺序表和链表对比

1、底层结构上
顺序表底层结构是一段连续的空间(也可以这么说顺序表底层空间是逻辑上和物理上都是连续的)
链表底层结构是动态的创建不连续的空间(链表底层是逻辑上连续,物理上不连续)
2、随机访问
顺序表支持随机访问,访问某个元素效率为o(1)
链表不支持随机访问,访问某个元素的效率为o(n)
3、插入和删除效率
顺序表的插入删除效率低,需要搬移元素,时间复杂度为o(n),并且再插入的时候还有可能需要增容,导致效率更低
链表中在任意位置的插入、头插、头删这几个操作中效率比较高,不需要搬移元素,时间复杂度为o(1)
4、空间利用率
顺序表底层为连续空间,不容易造成内存碎片,空间利用率高,但是如果顺序表涉及增容,并且增容之后剩余空间比较多这个空间利用率就比较低了(特殊情况)
链表底层是动态开辟的,小节点容易造成内存碎片,空间利用率低
5、缓存利用率
因为顺序表的空间一般是连续开辟的,而且一次会开辟存储多个元素的空间,所以在使用顺序表时,可以一次把多个数据写入高速缓存,再写入主存,顺序表的CPU高速缓存效率更高,且CPU流水线也不会总是被打断;而单链表是每需要存储一个数据才开辟一次空间,所以每个数据存储时都要单独的写入高速缓存区,再写入主存,这样就造成了,单链表CPU高速缓存效率低,且CPU流水线会经常被打断。
6、应用场景
顺序表:
需要高效存储,支持随机访问,不关心插入删除效率
链表:
大量插入删除操作,不关心随机访问

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值