用于获得所需结果的数据结构

时间:2014-02-19 16:41:35

标签: java data-structures

我有一个矩阵......

例如

1  2  3
4  5  6
7  8  9
10 11 12

现在,我想取平均值(1,4,7,10)并将其存储为(2,5,8,11)......并将其存储为...(3,6,9, 12)并存储它。

我只是想知道我应该使用哪种结构来提高效率。

可以增加或减少行数和列数。

我想到了arraylist或list。根据列数,我会采取平均值。但我不认为这是最佳解决方案..

你能指导我吗?

1 个答案:

答案 0 :(得分:2)

假设您将矩阵存储在2D数组中,如下所示:

int[][] matrix = int[n][m]; //where n is the number of rows and m is the number of columns

您可以创建一个大小为m的数组来存储所有值:

double[] avg = double[m];

(注意:此数组的类型为double,但您可以将其更改为浮动或您在计算平均值时使用的任何类型。double优于int,但它会帮助您保持精度):

这实际上取决于你要对输出做什么,但是对于大多数情况来说,像这样的简单数组可能已经足够了。存储值非常容易,因为当您在i中添加matrix列中的值时,可以将该avg添加到i数组中的索引avg

像这样:

for (int i = 0; i < m; i++)
{
    avg[i] = averageForColumn(i);
}

在上述情况下,averageForCoumn(int)返回给定索引处列的平均值。你实际上并不需要创建一个方法来执行此操作,你可以只使用另一个for循环。