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)
相关推荐
是码龙不是码农几秒前
支付防重复下单|5 种幂等性设计方案(从初级到架构级)
java·架构·幂等性
曹牧1 分钟前
Spring Boot:如何在Java Controller中处理POST请求?
java·开发语言
heartbeat..1 分钟前
JVM 性能调优流程实战:从开发规范到生产应急排查
java·运维·jvm·性能优化·设计规范
WeiXiao_Hyy4 分钟前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
苏渡苇10 分钟前
优雅应对异常,从“try-catch堆砌”到“设计驱动”
java·后端·设计模式·学习方法·责任链模式
团子的二进制世界17 分钟前
G1垃圾收集器是如何工作的?
java·jvm·算法
long31622 分钟前
Aho-Corasick 模式搜索算法
java·数据结构·spring boot·后端·算法·排序算法
rannn_1111 小时前
【苍穹外卖|Day4】套餐页面开发(新增套餐、分页查询、删除套餐、修改套餐、起售停售)
java·spring boot·后端·学习
灵感菇_1 小时前
Java HashMap全面解析
java·开发语言
qq_12498707531 小时前
基于JavaWeb的大学生房屋租赁系统(源码+论文+部署+安装)
java·数据库·人工智能·spring boot·计算机视觉·毕业设计·计算机毕业设计