ArrayList - 数据结构 - 数组

ArrayList - 数据结构 - 数组

数组(Array)是一种用连续的内存空间存储相同数据类型的线性数据结构

数组如何通过索引来获取的数据?寻址公式,int占4个字节。

为什么数组从0开始,而不是从1开始。

嗯,是这样的,如果数组从1开始索引也是可以的,但是原来的寻址公式就不能用了,就需要用新的寻址公式

这样的寻址公式,相比从0开始索引的寻址公式,对于CPU来说添加了一个减法的指令。从0开始索引相比从1开始索引性能会好一些。

  1. 数组是用一种连续的内存空间存储相同数据类型的线性数据结构

  2. 数组下标为什么从0开始?

    1. 当我们使用索引去查询数据的时候,会通过一个寻址地址来计算,公式是 baseAddress + 索引 * dataTypeSize(首地址 + 索引乘数据类型大小)。如果数组从1开始索引的话,会给CPU增加一个减法的指令,积少成多,性能不高。
  3. 查找的时间复杂度

    1. 如果是按索引查找的话,那么时间复杂度就是O(1)
    2. 如果不知道索引,而是遍历的话,那么平均的复杂度就是O(n)
    3. 不知道索引,但是排序了,通过了2分查找那么时间复杂度就是O(log n)
  4. 插入和删除的时间复杂度

    1. 平均都是O(n)
相关推荐
X***07887 分钟前
从语言演进到工程实践全面解析C++在现代软件开发中的设计思想性能优势与长期生命力
java·开发语言
smileNicky13 分钟前
SpringBoot系列之集成Pulsar教程
java·spring boot·后端
Sammyyyyy33 分钟前
Rust 1.92.0 发布:Never Type 进一步稳定
java·算法·rust
alonewolf_9943 分钟前
深入解析G1与ZGC垃圾收集器:原理、调优与选型指南
java·jvm·算法
小镇学者44 分钟前
【c++】C++字符串删除末尾字符的三种实现方法
java·开发语言·c++
rfidunion1 小时前
springboot+VUE+部署(1。新建项目)
java·vue.js·spring boot
小翰子_1 小时前
Spring Boot整合Sharding-JDBC实现日志表按月按周分表实战
java·spring boot·后端
weixin_399380691 小时前
OA 系统假死问题分析与优化
java·运维
豆沙沙包?1 小时前
2026年--Lc334-2130. 链表最大孪生和(链表转数组)--java版
java·数据结构·链表
柒.梧.1 小时前
SSM常见核心面试问题深度解析
java·spring·面试·职场和发展·mybatis