本文已参与「新人创作礼」活动,一起开启掘金创作之路。
GitHub同步更新(已分类):Data_Structure_And_Algorithm-Review
公众号:URLeisure 的复习仓库 (点击可见公众号二维码)
提示:以下是本篇文章正文内容,下面案例可供参考
数组的存储
-
数组是由相同类型的数据元素构成的有限集合。
-
一维数组可以看做一个线性表。
-
二维数组也可以看作一个线性表 X = (X
0,X1,X2,...,Xn-1),只不过每一个数据元素 Xi也是一个线性表。 -
同样,二维数组也可以看作一个线性表 Y = (Y
0,Y1,Y2,...,Ym-1),只不过每一个数据元素 Yi也是一个线性表。
一维数组:
二维数组
-
数组一般采用
顺序存储结构,因为存储单元是一维的,而数组可以是多维的。 -
利用一组连续的存储单元来存储多维数组:
-
以二维数组为例,可以按行序存储,即先存第一行,再存第二行……也可以按列序存储,先存第一列,再存第二列……
-
c 语言,java 都是按行序存储的。
寻找存储位置
寻找 aij 的存储位置。
按行存储
-
如果每个元素占L字节,那么共需要 (i×n + j ) × L 字节,只要用基地址加上这些字节就可以得到 a
ij的存储地址。 -
由图可计算出,LOC(a
ij) = LOC(a00) + (i×n + j ) × L。
按列存储
-
如果每个元素占L字节,那么共需要 (j×m + i ) × L 字节,只要用基地址加上这些字节就可以得到 a
ij的存储地址。 -
由图可计算出,LOC(a
ij) = LOC(a00) + (j×m + i ) × L。
总结
- 计算时,注意下标的起始数字,本篇起始数字为 0。
下期预告: 模式匹配 KMP 算法