c++_矩阵转置

什么是矩阵转置?

一个 n × n 的方阵 matrix,其转置矩阵是:

将原矩阵的行变为列,列变为行。 也就是说,matrix [i] [j] → matrix[j] [i]

举个例子:

原始矩阵:

1 2 3
4 5 6
7 8 9

转置后应该变成:

1 4 7
2 5 8
3 6 9

你可以看到:

  • matrix[0][1] = 2 → matrix[1][0] = 2

  • matrix[2][1] = 8 → matrix[1][2] = 8 等等。

我们要怎么用代码实现它呢?请看下面的代码:

for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
        //把 第 i 行第 j 列 与 第 j 行第 i 列 的值交换
        swap(matrix[i][j], matrix[j][i]);
    }
}

为什么从 j = i + 1 开始? 因为:

  • 对角线元素 matrix[i][i] 不需要交换(转置后位置不变)

  • matrix[i][j]matrix[j][i] 是成对对称的

  • 只需处理上三角区域(i < j),剩下的部分自动完成

你可能感兴趣的:(算法,数据结构)