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)
相关推荐
豐儀麟阁贵8 小时前
8.1 异常概述
java·开发语言
qq_12498707539 小时前
基于springboot的疾病预防系统的设计与实现(源码+论文+部署+安装)
java·spring boot·后端·毕业设计
麦烤楽鸡翅9 小时前
简单迭代法求单根的近似值
java·c++·python·数据分析·c·数值分析
火星数据-Tina9 小时前
低成本搭建体育数据中台:一套 API 如何同时支撑比分网与 App?
java·前端·websocket
lcu1119 小时前
Java 学习38:ArrayList 类
java
q***25110 小时前
Spring Boot 集成 Kettle
java·spring boot·后端
筱顾大牛10 小时前
IDEA使用Gitee来创建远程仓库
java·gitee·intellij-idea
懂得节能嘛.10 小时前
【SDK开发实践】从Java编码到阿里云制品仓库部署
java·阿里云·maven
空空kkk10 小时前
SpringMVC——异常
java·前端·javascript
重整旗鼓~10 小时前
1.大模型使用
java·语言模型·langchain