使用行主要1-dim数组实现2-dim数组

时间:2014-10-13 17:22:37

标签: java arrays class multidimensional-array implementation

使用 row-major 1-dim数组实现2-dim数组 我到了这里,我不明白如何完成实现2-dim阵列的代码,请帮忙!

public class TwoDimArray {
int[] a = null;
public TwoDimArray(int r, int c){}
public int get(int i, int j) {}
public int[] getRow(int i) {}
public int[] getCol(int j) {}
}

3 个答案:

答案 0 :(得分:0)

这看起来像是家庭作业,所以我不打算给你一个完整的答案,但这里有一些想法可以帮助你开始:

如果要表示5x7阵列(5行,7列),则需要创建包含35个元素(35 = 5 * 7)的一维数组。

a的前7个元素将是第0行;从而

  • get(0,0)将访问a[0]
  • get(0,1)将访问a[1]
  • get(0,2)将访问a[2]

等等。

第一行的7个元素后面跟着下一行的7个元素,然后是7后面的行;这意味着

  • get(0,0)将访问a[0]
  • get(1,0)将访问a[7]
  • get(2,0)将访问a[14]

等等。我认为你应该能够找出模式,因此很好地了解如何使这项工作。

答案 1 :(得分:0)

我不确定行主要意味着什么,但我认为这意味着元素按行排列在1-dim数组中(即第一行c元素构成第一行,下一个c元素组成第二行,等等......)。

  1. 构造函数很简单 - 您创建了一个r*c元素数组。

  2. 获取(i,j)元素是数学的问题 - 找到给出行索引i和列索引j的公式,计算数组中的位置(i,j)元素。提示 - 公式涉及将请求行乘以列长度。

  3. 获取行数组是直截了当的,因为1-dim数组的元素代表连续的单行。正如我之前提到的,第一行c元素是第一行等等......

  4. 获取列数组涉及为每个i找到(i,j)元素(当j为常量时)。

答案 2 :(得分:0)

除了Eran& ajb回答,这是如何得到矩阵的行(i)和列(j)

Columns = number of columns 
for (int i=0; i < oneDimension.length; i++)
        {
            int rowIndex = i / Columns;
            int columnIndex = i % Columns;
        }