我有一个矩阵......
例如
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。根据列数,我会采取平均值。但我不认为这是最佳解决方案..
你能指导我吗?
答案 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循环。