数组的性质
数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据 。
线性表:线性表就是一种排列成一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。除了数组,链表、队列、栈等也是线性结构。
与之对应是非线性表,二叉树、堆、图等。之间的关系不是简单的前后关系。
连线的内存空间和相同的类型数据。
好处:随机访问
坏处:删除、插入为保证数据的连续性,需要大量的数据搬移工作。
数组支持随机访问,根据下标访问的时间复杂度为O(1)
数组的访问
//a[i]_adress 要访问的数据地址
//base_address 数组开始地址
//i数组下标, data_type_size每一个存储的数据类型的大小
a[i]_adress = base_address + i * data_type_szie
为什么数组下标要从0开始
// 假设不从0开始,从1开始
a[i]_adress = base_address + (i-1)* data_type_szie
// 每次多了(i-1)计算,加大计算复杂度,浪费在计算资源
警惕数组访问越界问题
针对此问题很多语言提供了容器类。在python中没有数组结构,list列表代替更加灵活。但占用资源较大。
numpy库高效实现了数组结构。