Java循环超过一半的数组

时间:2011-08-05 17:19:48

标签: java loops matrix

我想在Java中循环一半的数组;这是因为矩阵将是完全对称的。如果我循环抛出i列和j行,每次我执行矩阵[i] [j]的操作时,我将对矩阵[j] [i]执行完全相同的操作。我应该能够通过不循环一半矩阵来节省时间。有关最简单方法的任何想法吗?

4 个答案:

答案 0 :(得分:7)

如果你想得到一个三角形:

for(int i=0; i<array.length; i++){
  for(int j=0; j<=i; j++){
    ..do stuff...
  }
}

答案 1 :(得分:0)

for (i = 0;i < size; ++i) {
 for (j = 0; j < i; ++j) {
  result = do_operation(i,j);
  matrix[i][j] = result;
  matrix[j][i] = result ;
 }
}

因此,您只为每对调用一次操作方法do_operation。

答案 2 :(得分:0)

for(int i = 0; i<array.length; i++){
  for(int j = 0; j < array[i].length - i; j++){
     // operation here
  }
}

答案 3 :(得分:0)

也许我在这里遗漏了一些东西,但是假设你有两个数组分别代表你的行和列,并假设它是对称的(如你所说):

int dimension = rows.Length;
for(int i=0; i<dimension; i++)
{
  int j = (dimension-1) - i; //need dimension-1 to avoid an off-by-one error
  DoSomething(matrix[i][j]);
  DoSomehting(matrix[j][i]);
}

此解决方案具有运行时复杂性优势,只能迭代一个循环而不是两个循环。