好的,我有一个数组A [4] [4]和另一个A [16],它们都是彼此不同的表示。现在,我在2D数组上获得了元素位置,但我必须从1D数组访问它。 IE,如果我被告知在我的1D数组中访问元素A [2] [0],我该怎么做?
答案 0 :(得分:0)
这取决于您的编程语言和数组类型的选择。根据您的语言,数组以row-major order or column-major顺序存储:
编辑:根据documentation,Java没有多维数组:在Java中,多维数组由数组数组构成,即一个数组,其元素是对数组对象的引用。这意味着每行可以具有不同的长度,因此存储格式既不是行主要也不是列主要。
行主要顺序用于C / C ++,PL / I,Python,Speakeasy等。列主要顺序用于Fortran,MATLAB,GNU Octave,R,Julia,Rasdaman和Scilab。
在某些语言中,您也可以选择顺序(例如MATLAB)
对于row-major order,A[2][0]
位于A[2*4+0]
(其中4是一行的大小):
偏移=行* NUMCOLS +列
对于column-major order,A[2][0]
位于A[0*4+2]
(其中4是一列的大小):
偏移=行+列* NUMROWS
这实际上取决于您的编程语言!
答案 1 :(得分:0)
在这个简单的示例中,A[2][0]
映射到A[8]
,因为您要求第三组中的第一个元素。同样,A[0][2]
映射到A[2]
,因为您要求第一组四的第三个元素。通常(A[i][j]
)您要求A
的第(i * 4 + j)个元素。
在更一般的情况下,您正在请求(i * width + j)-th元素。