При работе с матрицами, а именно с двумерным массивом назовем его int[][]a
для замены строк мы можем сделать так:
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
var temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
В этом случае все просто, и работоспособно. Но можем ли мы сделать что то подобное со столбцами? Я пытался сделать вариант var temp=a[][i]
или что то подобное, не компилятор выбивает ошибку.Есть какое-нибудь лаконичное решение данной проблемы, как на примере выше со строками?
Боюсь что простого лаконичного решения нет, т.к. столбцов физически не существует, это элементы в разных массивах.
Можно написать метод, который будет менять столбцы местами:
private static void swapColumns(int[][] a, int first, int second) {
//меняем элементы в каждой строке
for(int r=0; r<a.length; r++) {
int temp = a[r][first];
a[r][first] = a[r][second];
a[r][second] = temp;
}
}
И затем уже использовать его:
for...
swapColumns(a, i, j);
Чтобы поменять местами строки, циклы вообще не нужны. А вот чтобы поменять местами столбцы, один цикл придется использовать:
// Строки х и у меняются местами
var tempRow = a[x];
a[x] = a[y];
a[y] = tempRow;
// Столбцы х и у меняются местами
for (int i = 0; i < a.length; i++) {
var tempCol = a[i][x];
a[i][x] = a[i][y];
a[i][y] = tempCol;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском
у меня присутствует ховер, который добавляет линию подчеркивания под объектом]2
Как сделать отображение шрифта иконок кросс-браузерно?
Хочу отсортировать массив из массивов char (char[32])Хочу использовать метод sort из stl