小结

数组 链表
存储方式 连续内存空间 离散内存空间
数据结构长度 长度不可变 长度可变
内存使用率 占用内存少、缓存局部性好 占用内存多
优势操作 随机访问 插入、删除

备注:缓存局部性

在计算机中,数据读写速度排序是“硬盘 < 内存 < CPU 缓存”。当我们访问数组元素时,计算机不仅会加载它,还会缓存其周围的其他数据,从而借助高速缓存来提升后续操作的执行速度。链表则不然,计算机只能挨个地缓存各个节点,这样的多次“搬运”降低了整体效率。

操作 数组 链表
访问元素 $O(1)$ $O(N)$
添加元素 $O(N)$ $O(1)$
删除元素 $O(N)$ $O(1)$