Niefajun的技术点滴

niefajun

数据结构-数组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