数组
数组是一种最基础的数据结构,本文整理自极客时间相关课程,主要目的是把一些给我印象深刻的点记录下来。
数组是什么
数组(Array)是一种线性表数据结构。它用一组连续的内存,来存储一组具有相同类型的数据。
- 线性表
- 连续内存空间
- 相同类型
线性表
形象地来看,线性表就是数据排成像一条线一样的结构,并且最多只有前和后两个方向。数组、链表队列、栈等都是线性表结构。
与其对立的概念是非线性表,如二叉树、堆、图等。在非线性表中,数据之间并不是简单的前后关系。
连续的内存空间和相同类型的数据
- 因为这两个限制,数组具有了 “随机访问” 特性。
- 在数组中删除、插入数据,需要做大量数据搬移工作。
如何根据下标随机访问数组元素?
一维数组:a[i] = base_address + i * data_type_size
其中data_type_size指数据中每个元素的大小。例如:
a[0] = base_address + 0 * data_type_size
a[1] = base_address + 1 * data_type_size
a[2] = base_address + 2 * data_typ