Обмен многомерных элементов массива - PullRequest
1 голос
/ 12 марта 2020

У меня есть многомерный массив, и у меня есть типичная функция подкачки, но подойдет ли эта функция для любого числа измерений? Например,

public void swap(int a, int b) {
    int temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}

Это работает для обычного массива. Но мне нужно поменять местами два индекса двумерного массива. Могу ли я использовать одну и ту же функцию, но просто вызывать параметры по-разному?

Пример ввода:

int[][] arr = {{1}, {2}, {3}};
System.out.println(arr[0][0]);

// I am confused on
// what these parameters should be
swap(arr, arr[0][0], arr[1][0]);

System.out.println(arr[0][0]);

Пример вывода:

1
2

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Да, это возможно, я рекомендую отправить arr в качестве параметра метода:

public static <T> void swap(T[] arr, int a, int b) {
    T temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}
public static void main(String[] args) {
    int[][] a = {{1,2},{3,4}};
    swap(a,0,1);
    System.out.println(Arrays.deepToString(a));
}

В вашем случае T разрешается в одномерный массив int[].

0 голосов
/ 12 марта 2020

Вы можете использовать эту функцию с 4 параметрами:

public static void swap(int [][]t,int a, int b,int c,int d) {
    int temp = t[a][b];
    t[a][b] = t[c][d];
    t[c][d] = temp;
}
...