开发者

Java loop over half of array

I would like to loop over half of 开发者_JAVA百科an array in Java; this is because the matrix will be completely symmetric. If I loop throw i columns and j rows, every time I do an operation of matrix[i][j] I will do the exact same operation to matrix[j][i]. I should be able to save time by not looping over half of the matrix. Any ideas on the easiest way to do this?


If you're trying to get a triangle:

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


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 ;
 }
}

So you invoke the operation method do_operation only once for each pair.


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


Maybe I'm missing something here, but let's say you have two arrays representing your rows and columns respectively, and assuming that it's symmetric (as you say):

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]);
}

This solution has the runtime complexity benefit of only iterating over one loop as opposed to two.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜