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

数组与链表

数组与链表

基本概念

数组就是指数据是放在连续的内存空间,数组数据称为元素。

使用索引存取数组内容

由于数组数据是在连续空间,存取是用索引方式存取,这个读取方式在计算机领域称作随机存取,只要一个步骤就可以取得数组元素内容,所以时间复杂度是O(1)。

新数据插入数组

数组结构虽然好用,但插入删除元素需要较多时间。插入删除数据时,可能要移动所有数组元素,所以时间复杂度是O(n)。

数组的优缺点

当数组空间不足时,必须移动整个数组到新的内存空间,常常移动数组会造成程序的执行效率降低,应为数组多预留空间。多预留的空间超过时,数组数据仍必须在内存移动。如果没有使用多预留的空间,内存空间就会被浪费,别的程序也无法使用。

数组用二分法搜寻,时间复杂度是O(logn)。

链表数据形式与内存概念

链表表面上看是一串数据,但数据可能散布在内存各个地方。

链表中每个节点元素有两个区块,一个区块是数据区,主要存放数据,另一个区块是指标区,主要指向下一个元素。

链表的数据读取

链表读取数据使用顺序读取,必须从头开始搜寻数据,整个执行的时间复杂度是O(n)。

插入删除链表

只要将前一个节点指标指向此新节点,然后将新节点指标指向下一个节点就可以了,不需要遍历n个节点,所以时间复杂度是O(1)。

循环链表与双向链表

循环链表不管目前指标是指向哪一个节点,都可以搜寻整个链表。双向链表每个节点多增加了一个指标区,其中一个指标指向前面节点,另一个指标指向后面节点,指标可以向前搜寻,也可以向后搜寻。


http://www.kler.cn/a/521245.html

相关文章:

  • 【电工基础】2.低压带电作业定义,范围,工作要求,电工基本工具
  • 【llm对话系统】大模型 RAG 之回答生成:融合检索信息,生成精准答案
  • 四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)
  • 3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...
  • Node.js与MySQL模块结合:打造安全高效的用户信息管理系统
  • MySQL(单表访问)
  • java知识点 | java中不同数据结构的长度计算
  • Jetson nano 安装 PCL 指南
  • 【PyTorch][chapter 29][李宏毅深度学习]Fine-tuning LLM
  • 【第八天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-一种常见的回溯算法(持续更新)
  • unity. Capsule Collider(胶囊碰撞体)
  • 什么是反向海淘?如何入局反向海淘?
  • 关于圆周率的新认知
  • 寒假学web--day08
  • 第26章 测试驱动开发(TDD)模式详解与 Python 实践
  • K8s运维管理平台 - xkube体验:功能较多
  • [HOT 100] 0015. 三数之和
  • 代码审查中的自动化与AI应用
  • 2025寒假作业
  • C#,入门教程(09)——运算符的基础知识
  • 参照和谐色调为PPT图形设置统一格式的要点
  • CRMEB部署的一些修改
  • 【QT】 控件 -- 显示类
  • Android-okhttp详解
  • Spark Streaming编程基础
  • 基于Java(SSM)+MySQL实现的客户管理系统