




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数组元素存储地址的计算一维数组设一维数组An存放在n个连续的存储单元中,每个数组元素占一个存储单元(不妨设为 C个连续字节).如果数组元素A0的首地址是L ,则A1的首地址是L+C , A2的首地址是L+2C ,依次类推,对于0 i n 1有:Loc(Ai) Loc(A0) i*C二维数组二维数组的每个元素含两个下标,如果将二维数组的第一个下标 理解为行号,第二个下标理解为列号,然后按行列次序排列个元素, 则二维数组呈阵列形状。例如a11a12a1nAa21a22a2nam1am2amn它是一个行号为1m,列号为1n的二维数组元素阵列如何保存二维数组?首先要确定一个顺序aooa01a02aoo
2、a01a023ooa01a02B doa112Ba10a112Bdoa11a12a20a21a22a20a21a22a20a21a22a00 a01a02a10a11a12a20 a21 a22LJJVJ第0行第1行第2行3003013023oo301302300301302B3io311312B31o311312B310311312320321322320321322320321322300 310 320LJ301 311 321302312322L_ _J第0列第1列第2列3oo301302B31o311312320321322300301302B310311312320321、3223
3、00301302B310311312320321322a20 a21 a223203l03213O03l1 3223013123021234设count为数组B中元素的个数,则count=9按行优先存储123456789300301302310311312320321322按列优先存储123456789a00a10a20a01旦1a21a02a12a22人人7-YYV-第0列第1列第2列地址如何计算?所谓按行优先顺序,就是将数组元素按行向量的顺序存储,第i 1个行向量存储在第i个行向量之后。下面我们计算二维数组Am n中任一元素Aij的存储地址,设 每个数组元素所占空间为C个连续字节。显然,A
4、ij是第i个行向量 Bi中的第j个元素。123456789a。a01a2a10a11a12a20a21a22人 八一J第 0行第1行第2行在Aij之前的元素个数为u,分 别是A00,A01,A02,A0n , A10 , A11 , A12,A1n,,Ai-10 , Ai-11 , Ai-12,Ai-1n , Ai0 , Ai1, Ai2,Aij-1设每个数组元素所占空间为C个连续字节。则Loc (Aij)二Loc (A00 ) +u*Cu二?前i行(第0行到第i-1行)(每行n个元素)的元素个数+第i行的元素个数(Ai0到Aij-1)因此,u=i*n+j故Loc (Aij)二Loc (A00
5、 ) +u*C二Loc (A00 ) + (i*n+j ) *C按列优先存储123456789a。a10a20a1ana21a2a12a22人人.乍_VY9第0列第1列第2列地址如何计算?在Aij之前的元素个数为v,分别是A00,A10,A20,Am0 , A01 , A11 , A21,Am1,,A0j-1 , A1j-1 , A2j-1,,Amj-1 , A0j , A1j, A2j,,Ai-1j设每个数组元素所占空间为C个连续字节。则Loc (Aij ) =Loc (A00 ) +v*Cv=?前j列(第0列到第j-1列)(每列m个元素)的元素个数+第j列的元素个数(A0j到Ai-1j)因
6、此,v=j*m+i故Loc (Aij)二Loc (A00 ) +v*C二Loc (A00 ) + (j*m+i ) *C高维数组按行优先:“左”下标优先,即第一(最左)下标的下标值较小的 元素较先存储,第一个下标值相同者,按第二下标优先存储,对任意 的k1,对第1( k-1 )维相同者,先存储第k维中下标值较小者。按列优先:“右”下标优先(最后一维下标为最右),先存储第n 维下标值较小者,第n维下标值相同者,先存储第n-1维下标值较小 者。三维数组D334的顺序存储次序是元素表示为 Dijk 其中,OW i 2, 0j 2, 0 k3,可以把它看作一维数组B13 = D034 , D134 ,
7、 D234 D034i=0D134i=1D234D000,D001,D002,D 003D010,D011,D012,D013D020,D021,D022,D 023D 1 00,D101,D102,D103D110,D111,D112,D113D 1 20,D121,D122,D123D200,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第一个下标的变化:0到i-1,共i
8、*3*4个元素第一个下标为i时,第二个下标的变化:0到j-1,共j*4 个元素第一个下标为i,第二个下标为j时,第三个下标的变化:0到k-1, 共k个元素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 doa。 ai0 a20 ai a“ a2i a2 ai2 a22For z=0 to 3 doFor y=0 to 2 doFor x=0 to 2 doDijk的地址:Loc( Dijk )=Loc( D000)+w*C
9、D330k=0D331k=1D332k=2D333k=3D000, D100, D200j=0D010, D110, D210j=1D020,D120,D220j=2D001,D101,D201j=0D011,D111,D211j=1D021,D1 21,D221j=2D002,D102,D202j=0D012,D112,D212j=1D0 2 2,D1 22,D222j=2D003,D103,D203j=0D013,D113,D213j=1D0 2 3,D1 23,D223j=2第三个下标的变化:0到k-1,共k*3*3个元素第三个下标为k时,第二个下标的变化:0到j-1,共j*3个元素第三
10、个下标为k,第二个下标为j时,第一个下标的变化:0到i-1 , 共i个元素w= k*3*3+j*3+iLoc( Dijk )=Loc( D000)+w*C=Loc( D000)+( k*3*3+j*3+i)*Cn维数组amm2 gFor i1=0 tom1 1 doFor 12 =0 to m2 1 doFor in=0 to mn 1 doLoc(ii2, ,in)Loc(0,0, ,0) s*Cnl1的变化:0i1-1,共h*m2*m3* mn = i1* 叫个元素P 2nh等于i1时,I2的变化:0f-1,共i2* m3 * mn = i2* mp个兀素p 3nh等于i1时,l2等于i2时,l3的变化:0i3-1 ,共i3*m4* Ff* 叫P 4元素l1等于i1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年纺织品设计师证书考试培养的能力试题及答案
- 初二英语提高试题及答案
- 2024年纺织工程师市场竞争策略试题及答案
- 广告设计的理念与方法论研究 试题及答案
- 幻想情景测试题及答案
- 2024年纺织品检验员备考攻略试题及答案
- 2024年纺织工程师考试试题及答案
- 2024年纺织品设计师证书考试中成功的关键要素试题及答案
- 本科国际公法试题及答案
- 农业区位因素试题及答案
- 2023年福建三明市初中毕业班数学质量检测卷(附答案)
- 现金盘点表完整版
- 金蝶固定资产管理系统
- LY/T 2457-2015西南桦培育技术规程
- GB/T 40998-2021变性淀粉中羟丙基含量的测定分光光度法
- GB/T 25840-2010规定电气设备部件(特别是接线端子)允许温升的导则
- 军标类型整理文档
- FZ/T 52019-2011莱赛尔短纤维
- 止血包扎(课件)
- 2022年湖南高二学业水平合格考试政治试卷真题及答案详解
- 投行业务二o一五年度经营绩效考核办法
评论
0/150
提交评论