2. 数组
2.1 数组的结构 数组,是一块连续的内存区域,且具有相同类型的数据结构。 说回上一次的图。(图片修改自极客专栏:《数据结构与算法之美》) 这就是数组的一块内存区域。 我们提下上面说的两个特点: 连续内存区域 相同的数据类型 这两个特点有什么好处呢? 我们上次说到,如果我们想要查找一个房间1036(一块数据),我们站在上图中1000的位置,然后有下面两种方式: 从1000走4步,到1004,然后再走4步,到1008,以此类推,最终走到1036(为什么每次都走4步呢,就是由相同的数据类型决定的,数据决定了数据所占空间的大小) 或者我们站在1000处,我们需要到a[9]处,我们在心中估算从1000应该跳多远。我们估算出4步的大概距离,然后计算(9-0)*4+1000=1036,也就是我们需要跳过9个4步的距离就可以达到目的地。 回归到计算机,我们创建一个数组: int[] a = new int[10]; 如上图所示,有10块区域,我们知道房间是连续的,我们的起始位置是1000,每个区域占4个大小,请问最后一块区域的起始地址是多少? 如果以0开始记号,也就是10块区域,分别记号为(0,1,...,9),可以这样计算 最后的地址 = 1000 + i * 4 如果以1开始记号,也就是10块区域,分别记号为(1,2,...,9, 10),可以这样计算 最后的地址 = 1000 + (i-1