§4.1.5多维数组的存贮 (二)按列存贮 右下标(最后一维下标为最右)优先的存贮映射方式 a201a301a401a211a311a411(接下行) a202a302a402a212a312a412(接下行) 203a303a403a213a313a413 n维数组按列存贮的寻址公式为 Loc(1,2…in)=c(i1+d2+d1d2l3+…+d1d2…dnn) 例如,对三维数组,按列存储寻址公式为 oC(1 3)=c(i1+du2+dd2j3) 16
16 §4.1.5 多维数组的存贮 • (二)按列存贮 • 右下标(最后一维下标为最右)优先的存贮映射方式 a201 a301 a401 a211 a311 a411 (接下行) a202 a302 a402 a212 a312 a412 (接下行) a203 a303 a403 a213 a313 a413 • n维数组按列存贮的寻址公式为 Loc(i1 ,i2 … in ) = c · (j1 + d1 j 2 + d1 d2 j 3 + …+ d1 d2 …dn-1 j n ) • 例如,对三维数组,按列存储寻址公式为 Loc(i1 i 2 i 3 ) = c·( j1+d1 j 2 + d1 d2 j 3 )
§4.1.6寻址公式的计算 秦九韶法变换式(F41)中的主要部份 j1d4d3…dln+j2d3dn =(1d2+1)d3…dn+j3d4…dn+…+jndn+in =(id2+j2)d3+J3)d4dn+j4ds,…dn+…+n1dn+Jn =(….(1d2+j2)d3+j3)d4+14)d+…+in1)dn+Jn =(.(0d1+)d2+2)d-+3)d4+j4)d5+..+1n1 17
17 §4.1.6 寻址公式的计算 • 秦九韶法变换式(F4.1)中的主要部份 j 1 d2 d3…dn + j 2 d3…dn +…+jn-1 dn + j n = (j1 d2+ j 2 )d3…dn + j 3 d4…dn +…+jn-1 dn + j n =((j1 d2+ j 2 )d3+ j 3 ) d4…dn + j 4 d5…dn +…+jn-1 dn + j n =…… =(…(j1 d2+ j 2 )d3+ j 3 ) d4+j4 )d5+…+jn-1 )dn +j n =(…((0*d1+j1 )d2+j 2 )d3+ j 3 ) d4+j4 )d5+…+jn-1 )dn +j n
4.1.6寻址公式的计算 此式可按下法计算 while(k=n) B*d k +j k=k+1; 18
18 §4.1.6 寻址公式的计算 • 此式可按下法计算 s=0; k=1; while (k<=n) { s = s*dk+jk ; k = k+1; }
§4.1.6寻址公式的计算 long GetArrayElemAddress (long /[, long h[, long i[, long n, int c) long for(k1; k<=n; k++ s=s*(k]-k]+1)+(k]-1k]); return s
19 §4.1.6 寻址公式的计算 long GetArrayElemAddress(long l[], long h[], long i[], long n, int c) { long k, s; s=0; for (k=1; k<=n; k++) s = s*(h[k] – l[k] + 1) + (i[k] – l[k]); return s; }
§4.2特殊数组 二维数组在形式上是矩阵 特殊矩阵:元素分布具有一定规律 对称矩阵 上/下三角矩阵 稀疏矩阵:零元素(或相同元素)居多数的矩阵 20
20 §4.2 特殊数组 • 二维数组在形式上是矩阵 • 特殊矩阵 :元素分布具有一定规律 –对称矩阵 –上/下三角矩阵 • 稀疏矩阵 :零元素(或相同元素)居多数的矩阵