随机访问(Random Access)

随机访问(Random Access)

随机访问(Random Access)的意思是:

👉 可以在O(1) 时间内直接访问任意位置的数据,不需要从头开始一个个找

一、最简单理解

✔ 数组 = 随机访问

arr = [10, 20, 30, 40]

你可以直接:

arr[2] # 30

👉 一步到位

二、链表 = 不能随机访问

1 → 2 → 3 → 4

如果你要找第 3 个:

👉 必须这样走:

1 → 2 → 3

👉 O(n) 时间

三、为什么数组可以随机访问?

因为数组在内存中是:

👉 连续存储

例如:

地址: 1000 → 1004 → 1008 → 1012

数学本质:

arr[i] = 起始地址 + i × 每个元素大小

👉 可以直接算出地址

四、为什么链表不行?

链表是:

1 → 2 → 3 → 4

但内存是这样:

1(0x100) → 2(0x900) → 3(0x300)

👉 不连续

所以:

❌ 不能通过“位置计算”直接找到

只能一个一个next走。

五、核心对比

特性数组链表
访问第 i 个O(1)O(n)
是否连续内存
是否随机访问可以不可以

六、生活类比(很好理解)

✔ 数组:

像书架编号:

第1格、第2格、第3格

👉 你知道编号就直接拿

❌ 链表:

像“排队接龙”:

A拉着B,B拉着C

👉 想找 C,必须从 A 一路走过去

七、一句话总结

随机访问就是可以通过下标在 O(1) 时间直接访问任意元素;数组支持随机访问,链表不支持。