1. 在不同的操作情况两者的性能不尽相同,下面是具体的对比:
① 对于空间上的要求
链表会需要更多一点的空间,因为不仅要存储数据,而且要存储下一个节点的地址,所以需要消耗一些额外存储下一个节点的空间
数组是元素是多少那么整个需要开辟的空间就是多少,不需要开辟额外的空间
② 新增元素操作
链表是直接插入到链表中就可以了,不用考虑什么边界上的问题,时间复杂度为O(1),但是对于数组而言是要考虑数组最大容量的问题,所以涉及到扩容的问题,时间复杂度大约为O(n)
③ 更新操作
假如使用索引来进行更新,数组比较快,时间复杂度大约为O(1),直接定位元素就可以了,而链表是要通过计数一直到计数等于给出的索引的时候那么这个时候才找到需要更新的元素的位置,所以时间复杂度为O(k)
④ 查询操作
假如使用索引来进行查询那么数组更快,时间复杂度为O(1),链表需要通过计数一直到给出的索引才知道是找到了,时间复杂度为O(k)
假如给出内容需要返回结果,那么两者的查询的速度是一样的,因为两者都需要进行比对才知道是否匹配上了,时间复杂度为O(k)
⑤ 删除操作
假如使用索引来删除,数组删除元素之后需要将后面的元素往前进行移动,时间复杂度为O(n - k),链表直接扫描节点通过计数来进行匹配知道之后进行删除,时间复杂度为O(k)
假如使用内容来删除那么两者都需要进行顺序来查找,时间复杂度都为O(n)
所以对于删除操作来说两者都是差不多的
可以从上面看出对于查询与更新操作数组来说速度更快,新增与删除链表会更快一点