在每一种编程语言中,基本都会有数组这种数据类型。不过它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管它看起来十分简单,但是我们很多人都没有了解它的精髓。
首先,我们来想一个问题,为什么很多编程语言数组的下标都是从0开始的?从1开始不是更符合人类的思维模式吗?
接下来我们带着这个问题来学习接下来的内容?
如何实现随机访问?
我们都知道数组是一种线性表的数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。
这里有两个重点:连续的内存空间和相同类型的数据。(线性表 线性结构 与之对立的还有非线性表 线性结构,想一条线那样,只有前和后两个方向 像数组、队列、栈、链表等都是线性结构)
那么数组是如何实现随机访问的?
正是因为它是一种线性的结构和连续的内存空间,他才可以有这个特性。但是这个特性也有弊端,这两个限制让它的删除和插入操作变得十分低效。比如在数组中删除插入了一个数据,为了保证它的连续性,那么就需要将大量的数据进行搬移。
我们要删除3,则需要将4和5进行移动,使他连续。
我们先来解决第一个问题,数组是如何实现根据下标随机访问的?
我们拿一个长度为10的int型数组int[] a = new int[10]来举例。计算机给数组分配了一块连续的内存空间1000~1039,其中内存的首地址为index = 1000