介于2D和1D阵列之间

时间:2013-10-19 01:09:44

标签: arrays list 2d

好的,我有一个数组A [4] [4]和另一个A [16],它们都是彼此不同的表示。现在,我在2D数组上获得了元素位置,但我必须从1D数组访问它。 IE,如果我被告知在我的1D数组中访问元素A [2] [0],我该怎么做?

2 个答案:

答案 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 orderA[2][0]位于A[2*4+0](其中4是一行的大小):

偏移=行* NUMCOLS +列

对于column-major orderA[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元素。