使用 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) {}
}
答案 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
元素组成第二行,等等......)。
构造函数很简单 - 您创建了一个r*c
元素数组。
获取(i,j)元素是数学的问题 - 找到给出行索引i
和列索引j
的公式,计算数组中的位置(i,j)元素。提示 - 公式涉及将请求行乘以列长度。
获取行数组是直截了当的,因为1-dim数组的元素代表连续的单行。正如我之前提到的,第一行c
元素是第一行等等......
获取列数组涉及为每个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;
}