數(shù)組元素存儲(chǔ)地址的計(jì)算_第1頁
數(shù)組元素存儲(chǔ)地址的計(jì)算_第2頁
數(shù)組元素存儲(chǔ)地址的計(jì)算_第3頁
數(shù)組元素存儲(chǔ)地址的計(jì)算_第4頁
數(shù)組元素存儲(chǔ)地址的計(jì)算_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 數(shù)組元素存儲(chǔ)地址的計(jì)算一維數(shù)組設(shè)一維數(shù)組An存放在n個(gè)連續(xù)的存儲(chǔ)單元中,每個(gè)數(shù)組元素占一個(gè)存儲(chǔ)單元(不妨設(shè)為C個(gè)連續(xù)字節(jié)). 如果數(shù)組元素A0的首地址是L,則A1的首地址是L+C,A2的首地址是L+2C,依次類推,對(duì)于有:二維數(shù)組二維數(shù)組的每個(gè)元素含兩個(gè)下標(biāo),如果將二維數(shù)組的第一個(gè)下標(biāo)理解為行號(hào),第二個(gè)下標(biāo)理解為列號(hào),然后按行列次序排列個(gè)元素,則二維數(shù)組呈陣列形狀。例如它是一個(gè)行號(hào)為1m,列號(hào)為1n的二維數(shù)組元素陣列。如何保存二維數(shù)組?首先要確定一個(gè)順序第0行 第1行 第2行第0列 第1列 第2列1243設(shè)count為數(shù)組B中元素的個(gè)數(shù),則count=9按行優(yōu)先存儲(chǔ)123456789 第0行

2、 第1行 第2行 按列優(yōu)先存儲(chǔ)123456789 第0列 第1列 第2列 地址如何計(jì)算?所謂按行優(yōu)先順序,就是將數(shù)組元素按行向量的順序存儲(chǔ),第個(gè)行向量存儲(chǔ)在第個(gè)行向量之后。下面我們計(jì)算二維數(shù)組中任一元素Aij的存儲(chǔ)地址,設(shè)每個(gè)數(shù)組元素所占空間為個(gè)連續(xù)字節(jié)。顯然,Aij是第個(gè)行向量Bi中的第個(gè)元素。123456789 第0行 第1行 第2行 在Aij之前的元素個(gè)數(shù)為u,分別是A00,A01,A02,A0n,A10,A11,A12,A1n,Ai-10,Ai-11,Ai-12,Ai-1n,Ai0,Ai1,Ai2,Aij-1設(shè)每個(gè)數(shù)組元素所占空間為個(gè)連續(xù)字節(jié)。則Loc(Aij)=Loc(A00)+u*

3、Cu=?前i行(第0行到第i-1行)(每行n個(gè)元素)的元素個(gè)數(shù)+第i行的元素個(gè)數(shù)(Ai0到Aij-1)因此,u=i*n+j故Loc(Aij)=Loc(A00)+u*C =Loc(A00)+(i*n+j)*C按列優(yōu)先存儲(chǔ)123456789 第0列 第1列 第2列 地址如何計(jì)算?在Aij之前的元素個(gè)數(shù)為v,分別是A00,A10,A20,Am0,A01,A11,A21,Am1,A0j-1,A1j-1,A2j-1,Amj-1,A0j,A1j,A2j,Ai-1j設(shè)每個(gè)數(shù)組元素所占空間為個(gè)連續(xù)字節(jié)。則Loc(Aij)=Loc(A00)+v*Cv=?前j列(第0列到第j-1列)(每列m個(gè)元素)的元素個(gè)數(shù)+第

4、j列的元素個(gè)數(shù)(A0j到Ai-1j)因此,v=j*m+i故Loc(Aij)=Loc(A00)+v*C =Loc(A00)+(j*m+i)*C高維數(shù)組按行優(yōu)先:“左”下標(biāo)優(yōu)先,即第一(最左)下標(biāo)的下標(biāo)值較小的元素較先存儲(chǔ),第一個(gè)下標(biāo)值相同者,按第二下標(biāo)優(yōu)先存儲(chǔ),對(duì)任意的k>1,對(duì)第1(k-1)維相同者,先存儲(chǔ)第k維中下標(biāo)值較小者。按列優(yōu)先:“右”下標(biāo)優(yōu)先(最后一維下標(biāo)為最右),先存儲(chǔ)第n維下標(biāo)值較小者,第n維下標(biāo)值相同者,先存儲(chǔ)第n-1維下標(biāo)值較小者。三維數(shù)組D334的順序存儲(chǔ)次序是元素表示為Dijk 其中,0i2,0j2,0k3,可以把它看作一維數(shù)組B13 = D034,D134,D23

5、4 D034i=0D000,D001,D002,D003D010,D011,D012,D013D020,D021,D022,D023D134i=1D100,D101,D102,D103D110,D111,D112,D113D120,D121,D122,D123D234i=2D200,D201,D202,D203D210,D211,D212,D213D220,D221,D222,D223For x=0 to 2 doFor y=0 to 2 doFor z=0 to 3 doDijk的地址:Loc(Dijk)=Loc(D000)+w*C 第一個(gè)下標(biāo)的變化:0到i-1,共i*3*4個(gè)元素第一個(gè)下標(biāo)

6、為i時(shí),第二個(gè)下標(biāo)的變化:0到j(luò)-1,共j*4個(gè)元素第一個(gè)下標(biāo)為i,第二個(gè)下標(biāo)為j時(shí),第三個(gè)下標(biāo)的變化:0到k-1,共k個(gè)元素w= i*3*4+j*4+kLoc(Dijk)=Loc(D000)+w*C =Loc(D000)+(i*3*4+j*4+k)*CFor z=0 to 3 doFor y=0 to 2 doFor x=0 to 2 doj=0j=1j=2D330k=0D000,D100,D200D010,D110,D210D020,D120,D220j=0j=1j=2D331k=1D001,D101,D201D011,D111,D211D021,D121,D221j=0j=1j=2D33

7、2k=2D002,D102,D202D012,D112,D212D022,D122,D222j=0j=1j=2D333k=3D003,D103,D203D013,D113,D213D023,D123,D223For z=0 to 3 doFor y=0 to 2 doFor x=0 to 2 doDijk的地址:Loc(Dijk)=Loc(D000)+w*C 第三個(gè)下標(biāo)的變化:0到k-1,共k*3*3個(gè)元素第三個(gè)下標(biāo)為k時(shí),第二個(gè)下標(biāo)的變化:0到j(luò)-1,共j*3個(gè)元素第三個(gè)下標(biāo)為k,第二個(gè)下標(biāo)為j時(shí),第一個(gè)下標(biāo)的變化:0到i-1,共i個(gè)元素w= k*3*3+j*3+iLoc(Dijk)=Loc(D000)+w*C =Loc(D000)+(k*3*3+j*3+i)*Cn維數(shù)組For =0 to doFor =0 to doF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論