数组的超详细讲解

  • Post author:
  • Post category:其他





、数组是最基础的数据结构,尽管数组看起来非常地基础简单,但这个基础的数据结构要掌握其精髓也不是简单的事。




、定义:数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。

线性表:线性表的特征就是数据排成一条线一样的结构,每个线性表的数据最多只有前和后两个方向。除了数组,链表、队列、栈等数据结构也是线性表结构。

连续的内存空间和相同的数据类型:这两个条件的限制使得数组有了非常重要的特性,随机访问元素,随机访问元素的时间复杂度为O(1)。但是这两个条件的限制导致数据在插入和删除的时候为了保证数据的连续性,需要数据的搬移操作。




、随机访问:拿一个长度为5的int类型的数组int a[5],来举例子。在我们定义这个数组时,计算机会给数组int a[5],分配了一块连续的内存空间。假设数组int a[5]内存块的首地址为base_address=100,那么a[0]的地址就是100(首地址) a[1]的地址就是104,a[2]的地址就是108,a[3]的地址就是112,a[4]的地址就是116,计算机是通过访问内存地址,来访问内存中存储的数据。那么当计算机要随机访数组中的某个元素时,会通过下面这条寻址公式,计算出对应元素的内存地址,从而通过内存地址访问数据。

a[i]_address=base_address+i*data_type_size

a[i]_address表示对应数组下标的内存地址,data_type_size表示数组存储的数据类型的大小,数组int a[5]。存储的就是5个int类型的数据,他的data_type_size就是4个字节。



版权声明:本文为zhchaoyue原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。