记录为什么LIst数组“增删慢“,LinkedList链表“查改快“?

数组(Array)

  • 增删慢:对于数组来说,增加或删除元素的操作可能会比较慢,特别是当你需要在数组的开头或中间进行这些操作时。这是因为这些操作通常需要移动数组中的其他元素以保持连续性。例如,如果你想要在数组的第i个位置插入一个元素,那么你需要将i之后的所有元素都向后移动一位来腾出空间。同样,删除一个元素也需要将其后的所有元素向前移动一位。

  • 查改快:由于数组在内存中是连续存储的,因此可以通过索引直接计算出某个元素的地址,这使得访问特定位置的元素非常快(时间复杂度为O(1))。修改元素的值也非常快,因为一旦定位到元素的位置,就可以直接覆盖原值。

链表(Linked List)

  • 增删快:在单向链表中,增加或删除节点只需要更改相关节点的指针即可,不需要移动其它节点。比如,在链表的任意位置插入或删除一个节点,只需要调整前后节点的链接关系即可完成,这种操作的时间复杂度通常是O(1),前提是已经有了指向该位置的引用。然而,如果要在一个未知位置进行增删操作,首先需要遍历链表找到那个位置,这会导致最坏情况下的时间复杂度变为O(n)。

  • 查改慢:查找和修改链表中的元素通常比数组慢,因为链表中的元素不是连续存储的,无法通过简单的索引计算直接访问。要访问链表中的某个元素,必须从头开始逐个遍历直到找到目标节点,这个过程的时间复杂度为O(n)。修改元素虽然在找到元素之后是O(1)的操作,但由于查找本身可能需要线性时间,所以整体来看查改操作较慢。

相关推荐
豆沙沙包?2 小时前
C++~~~stack容器、queue容器、list容器(p45-P56)
c++·windows·list
LuminousCPP6 小时前
数据结构‑二叉树(二):二叉堆从零实现|Heap结构设计 + 建堆优化 + 堆排序深度解析
c语言·数据结构·笔记·二叉树
8 小时前
数据结构第一课:复杂度解析
数据结构
欧叶冲冲冲10 小时前
Python常见数据结构的CRUD(LeetCode高频版速查)
数据结构·python·leetcode
_Narcissus_10 小时前
链表算法题和静态链表
数据结构·c++·笔记·算法·链表·ai·力扣
Lyyaoo.11 小时前
【普通数组】【中等】除了自身以外数组的乘积
数据结构·算法·leetcode
疯狂打码的少年12 小时前
【数据结构】八大排序算法对比总结(时间/空间/稳定性)
数据结构·笔记·算法
青 春 记 忆14 小时前
LeetCode 206. 反转链表|Python 解法详解
python·leetcode·链表
啊嘞嘞?17 小时前
力扣(回文链表)
算法·leetcode·链表
Awh-17 小时前
数据结构 第六章:哈希存储
数据结构·算法·哈希算法