3.3 多维数组
3.3.1 多维数组ADT
多维数组包含了一组通过多个维度组织起来的数据。相应的索引是元组(i1, i2, ..., in)。
- MultiArray(d1, d2, .., dn):创建多维数组,并将所有值初始化为None,注意要传入可变参数 。维度最高从d1开始,一直到dn;
- dims():返回维度数;
- clear(value):将多维数组中所有数值设定为给定值;
- getitem(i1, i2, ..., in):返回给定 索引的值,也是传入可变参数;
- setitem(i1, i2, ..., in, value):将给定索引的值设定为给定值value。
在大多数编程语言中,多维数组是以一维数组的形式创建并储存在内存中。
数组储存(以二维数组为例)
行主序(row-major order):二维数组的数据按照一行一行地连续排列在底层的一维数组中,如下图:
列主序(column-major order):二维数组的数据按照一列一列地连续排列在底层的一维数组中,如下表:
索引计算(偏移量计算)
偏移量(offset):多维数组的某一项在底层数组中的索引。
二维数组的情形:index2(i, j) = i ∗n