我有一个矩阵。
e.g
1 2 3
4 5 6
7 8 9
10 11 12现在,我想取(1,4,7,10)的平均值并存储(2,5,8,11)的it..avg和( 3,6,9,12)的it..avg并存储它。
我只想知道为了提高效率,我应该使用哪种结构。
可以增加或减少行数和列数。
我想到了arraylist或list。根据列数的不同,我会取avg。但我不认为这是最好的解决方案。
你能帮我引路吗?
发布于 2014-02-20 00:44:50
假设您将矩阵存储在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,但您可以将其更改为float或计算平均值时使用的任何类型。double比int更好,因为它可以帮助你保持精度):
这真的取决于您要对输出做什么,但是对于大多数情况,像这样的简单数组可能就足够了。存储值将非常容易,因为在matrix中添加来自列i的值时,可以将该平均值添加到avg数组中的索引i中。
如下所示:
for (int i = 0; i < m; i++)
{
avg[i] = averageForColumn(i);
}在上面的情况下,averageForCoumn(int)返回给定索引处的列的平均值。你实际上不需要创建一个方法来做这件事,你可以只有另一个for循环。
https://stackoverflow.com/questions/21886787
复制相似问题