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)
相关推荐
luck_bor6 分钟前
IO流知识点笔记
java·开发语言·笔记
大圣编程1 小时前
面向对象深度理解
java·开发语言·算法
影寂ldy1 小时前
C# const 常量 / readonly 只读 / static readonly
java·开发语言·c#
摇滚侠1 小时前
Maven 入门+高深 体系外 jar 包导入 172
java·maven·jar
做个文艺程序员1 小时前
第02篇:K8s 存储与配置管理:ConfigMap、Secret、PV/PVC 实战——Java SaaS 多租户配置最佳实践
java·容器·kubernetes
爱吃牛肉的大老虎1 小时前
Spring中用到的设计模式
java·spring·设计模式
Refrain_zc1 小时前
Android TV 语音消息实战:遥控器 PCM 录音失真修复与扬声器强制播放方案
java
Stick_ZYZ1 小时前
从“能调用工具”到“能稳定执行任务”:Agent 工程化的下一步
java·人工智能·后端·spring·ai
代码中介商1 小时前
C++四大设计模式:单例、工厂、观察者、策略
java·c++·设计模式
宋志宗1 小时前
从三层架构到清晰边界:一套更适合复杂 Java 服务的分层方法
java