C 二维数组求和

C 二维数组求和,c,for-loop,multidimensional-array,C,For Loop,Multidimensional Array,代码: 为什么呢?一般来说,在处理多维问题时,我尽量保持字母顺序,以保持自己的理智。即: sum += a[i][j] or sum += a[j][i] 考虑到您有一个平方数组(列数=行数),运行时间/结果没有差别 sum += a[i][j][k] 前 这一行从第一行开始,将其上的每个数字都加到和中,然后再转到下一行,就可以求和了 总和+=a[j][i] 前 另一方面,这个函数取一列上每个元素的和,然后移到下一列 如果没有相同的行数和列数,则必须对语法进行一些编辑 1 2 3 4 5 6

代码:


为什么呢?

一般来说,在处理多维问题时,我尽量保持字母顺序,以保持自己的理智。即:

sum += a[i][j] or
sum += a[j][i]

考虑到您有一个平方数组(列数=行数),运行时间/结果没有差别

sum += a[i][j][k]

这一行从第一行开始,将其上的每个数字都加到和中,然后再转到下一行,就可以求和了

总和+=a[j][i]

另一方面,这个函数取一列上每个元素的和,然后移到下一列

如果没有相同的行数和列数,则必须对语法进行一些编辑

1 2 3
4 5 6
7 8 9

sum= 1 + 4 + 7 + 2 + 5 + 8 + 3 + 6 + 9;
for(int i=0;i
当然,在这里,您可以反转fors,和/或使用sum+a[i][j];最终结果将是相同的,但总和将以另一种方式创建

根据新信息进行编辑:

告诉我自己一些时间复杂度,实际上由于缓存的原因,时间差很小。访问距离较近的数据内存比访问距离较远的数据内存要快,因此a[i][j]比a[j][i]要好


为了看到这些方面的差异,您需要使用一个巨大的n作为数组的大小。

对于更好的方面,实际上没有区别。如果您关心矩阵的总和(例如,二维数组),那么它应该无关紧要。你最终会得到同样的数目。如果我们假设您使用“i”来扫描行,使用“j”来扫描列,那么如果您执行“sum+=a[i][j]”,您将得到“一次一行”的和,如果您执行“sum+=a[j][i]”,那么它将一次一列


因此,如果你不关心中间子金额,但总金额是你关心的,那么没有正确或错误的方法,也没有更好或更坏的方法。“sum+=a[i][j]”虽然更容易阅读和理解。

什么语言?(我猜是C?)。a[n]表示“由n索引的数组”,a[n][m]表示“在n索引的数组的m位置索引的值”,因此除非我们讨论某些特定情况,否则这些值是不能互换的。@David Robinson.Yes。但是,你使用的语言有区别吗?我知道它是如何工作的,我也知道不同的n*m矩阵。你会得到不同的表现。我只是想知道卡钦加[i][j],可能是因为空间位置。谢谢你的帮助。我喜欢你的编辑,它回答了我的问题:数据有意义,但在性能上仍然存在差异。我总是这样做的。但是你也必须记住程序的性能
sum+=a[i][j];
1 2 3
4 5 6
7 8 9

sum= 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9;
1 2 3
4 5 6
7 8 9

sum= 1 + 4 + 7 + 2 + 5 + 8 + 3 + 6 + 9;
for(int i = 0; i < n; i++)     // n = number of rows
  for(int j = 0; j < m; j++)   // m = number of columns
     sum += a[i][j];