单链表与数组实现线性表的性能比较

1. 在不同的操作情况两者的性能不尽相同,下面是具体的对比:

① 对于空间上的要求

链表会需要更多一点的空间,因为不仅要存储数据,而且要存储下一个节点的地址,所以需要消耗一些额外存储下一个节点的空间

数组是元素是多少那么整个需要开辟的空间就是多少,不需要开辟额外的空间

② 新增元素操作

链表是直接插入到链表中就可以了,不用考虑什么边界上的问题,时间复杂度为O(1),但是对于数组而言是要考虑数组最大容量的问题,所以涉及到扩容的问题,时间复杂度大约为O(n)

③ 更新操作

假如使用索引来进行更新,数组比较快,时间复杂度大约为O(1),直接定位元素就可以了,而链表是要通过计数一直到计数等于给出的索引的时候那么这个时候才找到需要更新的元素的位置,所以时间复杂度为O(k)

④ 查询操作

假如使用索引来进行查询那么数组更快,时间复杂度为O(1),链表需要通过计数一直到给出的索引才知道是找到了,时间复杂度为O(k)

假如给出内容需要返回结果,那么两者的查询的速度是一样的,因为两者都需要进行比对才知道是否匹配上了,时间复杂度为O(k)

⑤ 删除操作

假如使用索引来删除,数组删除元素之后需要将后面的元素往前进行移动,时间复杂度为O(n - k),链表直接扫描节点通过计数来进行匹配知道之后进行删除,时间复杂度为O(k)

假如使用内容来删除那么两者都需要进行顺序来查找,时间复杂度都为O(n)

所以对于删除操作来说两者都是差不多的

可以从上面看出对于查询与更新操作数组来说速度更快,新增与删除链表会更快一点

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值