4.1.4二维数组的存贮 (一)按行存贮 设二维数组的行下标与列下标变化范围分别为闭区间 ,h]与[2,h2,按行存储,任一元素a的相对地址计 算公式为 OC(1,j)=((h2-2+1)(i-1)+(-2)c
11 §4.1.4 二维数组的存贮 • (一) 按行存贮 • 设二维数组的行下标与列下标变化范围分别为闭区间 [l 1 , h1 ]与[l 2 , h2 ],按行存储,任一元素aij的相对地址计 算公式为 Loc(i, j) = ( (h2 - l 2+1) (i-l 1 ) + (j-l 2 ) ) · c
§4.1.4二维数组的存贮 (一)按行存贮 【例41】设某二维数组的两个下标的范围分别为[-1,2] 与[0,1],它的元素按行存贮的次序为(用a表示元素, 每个元素占两个单元) 相对地址024681012|14 元素 1,0c-1,10,0a0,1a1,0 a2,0a,1 Loc(-1,1)=((1-0+1)-1+1)+(1-0)*2 12
12 §4.1.4 二维数组的存贮 • (一) 按行存贮 • 【例4.1】.设某二维数组的两个下标的范围分别为[-1, 2] 与[0, 1],它的元素按行存贮的次序为(用ai表示元素, 每个元素占两个单元): 相对地址 0 2 4 6 8 10 12 14 元素 a-1,0 a-1,1 a0,0 a0,1 a1,0 a1,1 a2,0 a2,1 Loc(-1,1)=( (1-0+1)(-1+1)+(1-0) )*2 =2
§4.1.4二维数组的存贮 (二)按列存贮 先列后行,即先存贮列号较小者,列号相同者先存贮 行号较小者 a l1c21 1222…m2 aa.. a n mn 第1列元素第2列元素 第n列元素 任一元素a的相对地址计算公式为 oc(i,j)=(-2)(h1-41+1)+(i-1))c 13
13 §4.1.4 二维数组的存贮 • (二)按列存贮 • 先列后行,即先存贮列号较小者,列号相同者先存贮 行号较小者 a11 a21 … am1 a12 a22 … am2 …… a1n a2n … amn ────── ─────── ────── 第1列元素 第2列元素 第n列元素 • 任一元素aij的相对地址计算公式为 Loc(i, j) = ( (j-l 2 ) (h1 – l 1+1) + (i-l 1 ) ) · c
§4.1.5多维数组的存贮 (一)按行存贮 ·“左”下标优先的存贮方法 【例4.1】设某三维数组的三个下标范围分别为 [2,4],[0,1],[1,3] 则它按行存贮的次序为 a201a202a203a211a212a213(接下行) a301a302a303a311a312a313(接下行) a401a402a403a4l1a412a413
14 §4.1.5 多维数组的存贮 • (一)按行存贮 • “左”下标优先的存贮方法 【例4.1】设某三维数组的三个下标范围分别为 [2,4],[0,1],[1,3] 则它按行存贮的次序为 a201 a202 a203 a211 a212 a213 (接下行) a301 a302 a303 a311 a312 a313 (接下行) a401 a402 a403 a411 a412 a413
§4.1.5多维数组的存贮 (一)按行存贮 “设n维数组第k维的下标范围是[2h],记 dk -hk-4k+l, jk=ik-lK, k=1,2 则Loc(i1i2…,in)=c(id2d3…dn+j2d3…dn+…+jn1dl+jn) 例如,三维数组的寻址公式为 0c(i1i213)=c(1d2d3+j2d3+j3 15
15 §4.1.5 多维数组的存贮 • (一)按行存贮 • “设n维数组第k维的下标范围是[l k , hk ],记 dk = hk - l k + 1,j k = ik - l k,k= 1,2, …, n 则 Loc(i1, i 2 , … , in )=c·(j1 d2 d3…dn + j2 d3…dn +…+jn-1 dn + jn ) • 例如,三维数组的寻址公式为 Loc(i1 i 2 i 3 )=c·(j1 d2 d3 + j2 d3 + j3 )