Страницы

Поиск по вопросам

пятница, 22 марта 2019 г.

Алгоритмы транспонирования матриц

Есть ли какой-нибудь другой способ транспонирования квадратной матрицы?
for (int i = 0; i < N; i++) { for (int j = 0; j < i; j++) { tmp = a[i, j]; a[i, j] = a[j, i]; a[j, i] = tmp; } }


Ответ

Можно изменить алгоритм таким образом:
Начинать i = 1 вместо i = 0 Использовать обмена при помощи исключающего ИЛИ вместо обычного обмена
Зачем изменить алгоритм так? Не знаю, но раз вы хотите другой способ, вот вам:
for (int i = 1; i < N; i++) { for (int j = 0; j < i; j++) { a[i, j] ^= a[j, i]; a[j, i] ^= a[i, j]; a[i, j] ^= a[j, i]; } }

Комментариев нет:

Отправить комментарий