数据结构-数组01-概述
编辑
82
2025-01-10
定义
在计算机科学中,数组是一组相同数据类型元素(值或者变量)组成的数据结构,每个元素有至少一个索引(index)或键(key)来标识。
因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来,例如:
int[] array = {1, 2, 3, 4, 5}
知道了数组的**数据**起始位置BaseAddress, 就可以通过公式: BaseAddress + i * size 计算出索引i元素的地址。
i代表索引,java语言中从0开始计算。
size代表每个元素占用的字节,例如int类型占用4个字节,long占用8个字节。
性能
空间占用
下面以java语言为例进行说明(java当中的数组本质是一个对象),由对象头部分以及数据部分组成:
java中数组对象头部分结构为:
8字节的markword
4字节的class指针(注意压缩class指针的情况)
4字节数组大小(1个字节8位,4字节共32位,直接决定数组的最大长度为232次方)
数组元素 + 对齐字节(java中所有对象都是8字节的整数倍, 不足的话,需要使用对齐字节进行补齐)
例子:
int[] array = {1, 2, 3, 4, 5}
数组的大小为40字节, 组成如下:
随机访问
即根据索引查找元素。根据前面可以知道,知道数组起始位置和索引,就可以根据公式获取元素的内存位置,跟数组的长度没有关系,耗费时间是一个常数,时间复杂度是O(1)
- 0
-
分享