Практическое руководство транспонирует многомерный массив на месте

как транспонировать 2D матрицу на месте?

6
задан Ikke 21 April 2010 в 06:25
поделиться

5 ответов

for (int i=0; i<n; i++) {
  for (int j=0; j<i; j++) {
    temp = a[i][j];
    a[i][j] = a[j][i];
    a[j][i] = temp;
  }
}
6
ответ дан 8 December 2019 в 12:18
поделиться

Вы не указали язык, но обычно вы делаете следующее:

let a be your array.
for each i,j with i<j switch a[i,j] with a[j,i]
4
ответ дан 8 December 2019 в 12:18
поделиться

Чтобы получить транспонирование квадратной матрицы нам нужно рассмотреть элементы выше главной диагонали или ниже нее и поменять местами каждый с его отражением вдоль главной диагонали:

for i->0 to N-1
 for j->i+1 to N-1
  swap matrix[i][j] with matrix[j][i]
2
ответ дан 8 December 2019 в 12:18
поделиться

В Википедии была статья о переносе матриц на месте. В статье рассматриваются неквадратные матрицы.

http://en.wikipedia.org/wiki/In-place_matrix_transposition

7
ответ дан 8 December 2019 в 12:18
поделиться

Зачем беспокоиться? Просто поменяйте местами индексы в любом операторе доступа.

0
ответ дан 8 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: