ArrayList - 数据结构 - 数组
ArrayList - 数据结构 - 数组
数组(Array)是一种用连续的内存空间存储相同数据类型的线性数据结构
数组如何通过索引来获取的数据?寻址公式,int占4个字节。
为什么数组从0开始,而不是从1开始。
嗯,是这样的,如果数组从1开始索引也是可以的,但是原来的寻址公式就不能用了,就需要用新的寻址公式
这样的寻址公式,相比从0开始索引的寻址公式,对于CPU来说添加了一个减法的指令。从0开始索引相比从1开始索引性能会好一些。
-
数组是用一种连续的内存空间存储相同数据类型的线性数据结构
-
数组下标为什么从0开始?
- 当我们使用索引去查询数据的时候,会通过一个寻址地址来计算,公式是 baseAddress + 索引 * dataTypeSize(首地址 + 索引乘数据类型大小)。如果数组从1开始索引的话,会给CPU增加一个减法的指令,积少成多,性能不高。
-
查找的时间复杂度
- 如果是按索引查找的话,那么时间复杂度就是O(1)
- 如果不知道索引,而是遍历的话,那么平均的复杂度就是O(n)
- 不知道索引,但是排序了,通过了2分查找那么时间复杂度就是O(log n)
-
插入和删除的时间复杂度
- 平均都是O(n)