计算二维数组索引


假设我们有这样的一个二维数组
1
2
3
4
(X,Y)	0	1	2
0 0 1 2
1 3 4 5
2 6 7 8
  • (0, 0) -> 0
  • (1, 0) -> 1
  • (2, 0) -> 2
  • (0, 1) -> 3
  • (1, 1) -> 4
  • (2, 1) -> 5
  • (0, 2) -> 6
  • (1, 2) -> 7
  • (2, 2) -> 8
    下面我们实现这个算法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Test {

    public static void main(String[] args) {
    int width = 3;
    int length = 3;
    for (int x = 0; x < width; x++) {
    for (int y = 0; y < length; y++) {
    System.out.println("(" + x + ", " + y + ")" + (x + y * length));
    }
    }
    }
    }
    我们可以这样想象: 将这个二维数组串行, 就是以0, 1 , 2, 3, 4, 5, 6, 当计算(1, 1)这个坐标的时候就是用x加上 y在x上移动的倍数