我有一个数组列表。
其值为
arrlist[0] = 1 2 3
arrlist[1] = 4 5 6
arrlist[2] = 7 8 9
arrlist[3] = 10 11 12
arrlist[4] = 13 14 15
我想要的是得到:1,4,7,10,13
的平均值。然后是 2,5,8,11,14
的平均值,依此类推
生成的数组列表应仅包含一个字符串,如 7,8,9(所有 5 列的平均值)
编号是随机的。
这将是最有效的方式。 ??
我想到了一种方法,将每个元素存储在一个新的数组列表中,但循环会很大。
任何人都可以建议我一个有效的方法吗?
我的想法是:只是一个伪代码
arraylist newarrylist = new arraylist ();
for(int j=0;j<arrlist.size*arrlist[0].size;j++) // as each arrlist would have same elements
{
newarrylist[j] = arrlist(j).sunstring(j); // means will get the substring, first column, then second..
}
最佳答案
正如人们所说,过早的优化是万恶之源;当然,除非你的数组很大(例如 10000 行 * 10000 列)。
无论如何,计算平均值的选项并不多!
我要做的是这样的(将其更多地视为伪代码,我还没有调试它;另外,确保没有整数溢出):
int[] columnAverages = new int[width];
for (int row = 0; row < height; row++)
for (int column = 0; column < width; column++)
{
int value = (parse the next integer here);
columnAverages[column] += value;
}
for (int column = 0; column < width; column++)
columnAverages[column] /= height;
希望这有帮助
关于java - 用于矩阵平均值的高效数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22002752/