当前位置: 首页 > news >正文

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

数组(Array)

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

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

链表(Linked List)

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

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

相关文章:

  • Vue.js---分支切换与cleanup
  • 门禁人脸识别系统详细技术文档
  • 使用聊天模型和提示模板构建一个简单的 LLM 应用程序
  • 论坛系统(中-1)
  • Excel宏和VBA
  • 【周输入】510周阅读推荐-1
  • Timsort 算法
  • Promise.all静态方法
  • 销量预测评估指标
  • Python Django基于模板的药品名称识别系统【附源码、文档说明】
  • OpenVLA (2) 机器人环境和环境数据
  • 浏览器打开多线程下载教程,加快下载速度,让你的下载速度有质的飞跃
  • 【Bluedroid】蓝牙 HID DEVICE 初始化流程源码解析
  • C++中的虚表和虚表指针的原理和示例
  • 人脸识别系统中的隐私与数据权利保障
  • Supabase 的入门详细介绍
  • 【datawhale 组队学习】task01 第一章LLM介绍
  • ESP32C3连接wifi
  • 【PmHub后端篇】PmHub中基于自定义注解和AOP的服务接口鉴权与内部认证实现
  • 主流高防服务器技术对比与AI防御方案实战
  • 杭勇已任常州市政协党组成员,此前任常州市委常委、秘书长
  • 国内首家破产的5A景区游客爆满,洛阳龙潭大峡谷:破产并非因景观不好
  • 夜读|尊重生命的棱角
  • 日本广岛大学一处拆迁工地发现疑似未爆弹
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相
  • 比特币挖矿公司GRYP股价涨超171%:将与特朗普儿子创设的公司合并