Есть ли какой-нибудь другой способ транспонирования квадратной матрицы?
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];
}
}
Комментариев нет:
Отправить комментарий