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

【数据结构】线性数据结构——数组

1. 定义

数组是一种线性数据结构,由一组相同类型的元素组成,这些元素使用连续的内存空间存储。数组通过索引(下标)访问,每个元素的索引是固定的,从零开始递增。

2. 特点

  • 顺序存储:
    • 元素在内存中按地址连续存储。
    • 索引可以直接计算存储位置,因此支持快速访问。
  • 高效的随机访问: 通过索引可以在 O(1) 时间内访问任意元素。
  • 固定大小: 数组的大小在创建时确定,无法动态扩展(静态数组)。
  • 相同数据类型: 数组中的所有元素必须具有相同的数据类型。
  • 插入和删除效率低: 若在中间插入或删除元素,需移动大量元素,时间复杂度为 O(n)。

3. 主要操作

  • 访问元素: 通过索引直接访问,如 array[i]。时间复杂度:O(1)。
  • 插入元素: 若在末尾插入,效率高,时间复杂度为 O(1)。若在中间插入,需要移动后续元素,时间复杂度为 O(n)。
  • 删除元素: 删除中间元素需移动后续元素,时间复杂度为 O(n)。删除末尾元素效率高,时间复杂度为 O(1)。
  • 搜索元素:
    • 线性搜索:逐个比较元素,时间复杂度为 O(n)。
    • 二分搜索(仅适用于有序数组):时间复杂度为 O(logn)。

4. 优缺点

  • 优点: 支持快速随机访问。/ 内存连续,易于管理。/适合存储固定大小、类型一致的数据。
  • 缺点: 大小固定,缺乏灵活性。/ 插入和删除效率低,需移动大量元素。/ 可能导致内存浪费(未充分利用数组大小)。

5. 应用场景

  • 需要高效随机访问的场景: 数组索引提供快速的定位能力。
  • 存储固定大小的数据集: 如存储一周的温度数据、学生的成绩。
  • 基础结构: 许多高级数据结构(如栈、队列、堆)都基于数组实现。
http://www.lryc.cn/news/512423.html

相关文章:

  • QT---------GUI程序设计基础
  • 2、Bert论文笔记
  • Linux之ARM(MX6U)裸机篇----7.蜂鸣器实验
  • Zabbix 监控平台 添加监控目标主机
  • SpringCloud整合skywalking实现链路追踪和日志采集
  • html文件通过script标签引入外部js文件,但没正确加载的原因
  • OpenHarmony开发板环境搭建
  • 【Rust自学】7.6. 将模块拆分为不同文件
  • Python入门:8.Python中的函数
  • MySQL什么情况下会加间隙锁?
  • 【服务器开发及部署】code-server 显示git graph
  • Linux 终端查看 nvidia 显卡型号
  • 助你通过AI培训师中级考试的目录索引
  • 百度PaddleSpeech识别大音频文件报错
  • Lucene 漏洞历险记:修复损坏的索引异常
  • RabbitMQ基础篇之快速入门
  • 如何自定义 Kubernetes KubeSphere 默认 Logo:详细实现方案
  • 标准库以及HAL库——按键控制LED灯代码
  • Echarts+vue电商平台数据可视化——webSocket改造项目
  • Flink中并行度和slot的关系——任务和任务槽
  • 基于西湖大学强化学习课程的笔记
  • 瀚高数据库 问题: ERROR: operator does not exist: character varying = integer
  • 冷链温度记录仪蓝牙应用案例
  • LeetCode - Google 校招100题 第7天 序列(数据结构贪心) (15题)
  • 深入理解Redis:从理论到实践的Java之旅
  • LabVIEW故障诊断中的无故障数据怎么办
  • 基于DIODES AP43781+PI3USB31531+PI3DPX1207C的USB-C PD Video 之全功能显示器连接端口方案
  • MySQL配置my.ini文件
  • JVM常见排查问题的命令及可视化工具
  • 【python】matplotlib(moon cake)