Arrays 三维数组中的元素地址
我正在寻找公式,以查找行主数组和列主数组的三维数组中元素的内存位置。在使用我的逻辑之后,我得到了以下公式。 假设数组是Arrays 三维数组中的元素地址,arrays,data-structures,Arrays,Data Structures,我正在寻找公式,以查找行主数组和列主数组的三维数组中元素的内存位置。在使用我的逻辑之后,我得到了以下公式。 假设数组是A[L][M][N] 行主修:Loc(A[i][j][k])=base+w(M*N(i-x)+N*(j-y)+(k-z)) 主列:Loc(A[i][j][k])=base+w(M*n(i-x)+M*(k-z)+(j-y)) 其中x,y,z是第一(L)第二(M)和第三(N)个索引的下界。 我尝试了这个公式,得到了正确的结果,但当我把这个公式应用到书中的一个问题上时,答案并不匹配。请
A[L][M][N]
行主修:Loc(A[i][j][k])=base+w(M*N(i-x)+N*(j-y)+(k-z))
主列:
Loc(A[i][j][k])=base+w(M*n(i-x)+M*(k-z)+(j-y))
其中x,y,z是第一(L)第二(M)和第三(N)个索引的下界。
我尝试了这个公式,得到了正确的结果,但当我把这个公式应用到书中的一个问题上时,答案并不匹配。请任何人帮我解决这个问题。正确的答案是:
row-major:Loc(A[i][j][k])=base+w(N*(i-x)+(j-y)+M*N(k-z))
column-major:Loc(A[i][j][k])=base+w((i-x)+M*N(k-z)+M*(j-y))
三维阵列的计算公式
行主订单:
地址
A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro)*C + (J - Co)]
A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro) + (J - Co)*R]
A[I,J,K]=B+W*[(D-Do)*RC+(I-Ro)*C+(J-Co)]
列主要顺序:
地址
A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro)*C + (J - Co)]
A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro) + (J - Co)*R]
A[I,J,K]=B+W*[(D-Do)*RC+(I-Ro)+(J-Co)*R]
其中:
- B=基址(起始地址)
- W=重量(数组中存储的一个元素的存储大小)
- R=行(总行数)
- C=列(总列数)
- D=宽度(沿深度方向的单元格总数)
- Ro=行的下限
- Co=列的下限
- Do=宽度下限
base+w((I-x)+L*(j-y)+L*M*(k-z))
。或者我错了。请参考:以正确和清晰地理解多维数组、行和列的主要表示形式