数组的超详细讲解

本文详细解析了数组这一基础数据结构,重点介绍了数组的定义、随机访问特性和下标从0开始的原因。文章还探讨了数组在插入和删除操作上的效率问题,指出这些操作可能带来的时间复杂度挑战。
摘要由CSDN通过智能技术生成

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

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

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

连续的内存空间和相同的数据类型:这两个条件的限制使得数组有了非常重要的特性,随机访问元素,随机访问元素的时间复杂度为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个字节。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值