【探究】为什么很多编程语言中数组都从 0 开始编号?不要一度认为数组很简单!

数组是常见的数据结构,其通过下标实现随机访问。然而,插入和删除操作由于内存连续性的要求,效率较低。数组下标从0开始是为了减少寻址操作。文章探讨了数组的优化策略,如特定情况下的插入和删除优化,并总结了数组的基础特性和操作复杂度。
摘要由CSDN通过智能技术生成

数组,是日常开发中用到的最多的数据结构之一,说到这里,可能有人就不赞同,“怎么我学的数组不是数据结构呢?”,看完这篇文章,我相信你能够自己判断!

之前,自己一度认为数组太简单了,不就是通过下标拿元素,遍历数组,查找排序等操作。直到看了大佬对数组的介绍,才发觉自己真是坐井观天,对数组的理解太浅显了。

        数组专业一点来说是属于“线性表”的一种,它用一组连续的内存空间来存储具有相同类型的数据。

        常见的线性表结构有链表、数组、栈、队列,顾名思义线性表就是数据排列在一条线上,每个线性表上的数据最多只有前后两个方向。

        非线性表结构则比线性表更复杂,非线性表上的数据并不是简单的前后关系,常见的非线性表数据结构有图、树、堆等。

        通过上面的图,我们能明显看到线性表和非线性表的不同之处。线性表只有前后关系,非线性表则存在多种关系。

        继续说数组,上面说到来数组是线性表的一种,并且数组是连续的内存空间,相同的数据类型,所以数组有通过下标“随机访问”的特性;

        但是这也带来了一些弊端,就是数组是连续的,导致删除和插入的时候为了保证连续性需要进行大量的数据迁移。

        数据的访问,那到底数组是怎么通过下标随机访问元素的呢?

        拿一个长度为10的int类型数组 int[] a = new int[10]; 计算机会给数组分配连续的内存空间 1000~1039,其中内存首地址为base_address = 1000;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值