n*n数组逆置
时间: 2025-03-21 18:00:42 浏览: 24
### 实现n×n二维数组的逆置
对于一个 \( n \times n \) 的二维数组,其逆置可以通过交换矩阵中的行列位置来完成。具体来说,如果原始矩阵为 `matrix`,则逆置后的矩阵满足条件:
\[ result[row][col] = matrix[col][row] \]
以下是基于C++和Python两种语言的具体实现。
#### C++ 实现
在C++中,可以创建一个新的二维数组用于存储逆置的结果:
```cpp
#include <iostream>
using namespace std;
void transpose(int matrix[][3], int size, int transposed[][3]) {
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
transposed[j][i] = matrix[i][j]; // 行列互换
}
}
}
void printMatrix(int matrix[][3], int size) {
for (int i = 0; i < size; ++i) {
for (int j = 0; j < size; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
const int N = 3;
int original[N][N] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int transposed[N][N];
transpose(original, N, transposed);
cout << "Original Matrix:" << endl;
printMatrix(original, N);
cout << "\nTransposed Matrix:" << endl;
printMatrix(transposed, N);
return 0;
}
```
上述代码实现了对一个 \( 3 \times 3 \) 数组的逆置操作,并打印了结果[^1]。
---
#### Python 实现
在Python中,列表推导式提供了一种简洁的方式来实现矩阵转置:
```python
def transpose(matrix):
return [[matrix[j][i] for j in range(len(matrix))] for i in range(len(matrix[0]))]
if __name__ == "__main__":
original_matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
transposed_matrix = transpose(original_matrix)
print("Original Matrix:")
for row in original_matrix:
print(row)
print("\nTransposed Matrix:")
for row in transposed_matrix:
print(row)
```
这段代码同样展示了如何将一个 \( 3 \times 3 \) 矩阵进行逆置并输出结果。
---
### 关键算法说明
- **时间复杂度**: 对于 \( n \times n \) 的矩阵,逆置的时间复杂度为 \( O(n^2) \),因为需要遍历每一个元素。
- **空间复杂度**: 如果采用额外的空间保存逆置结果,则空间复杂度为 \( O(n^2) \); 若直接在原数组上修改,则可能降低到 \( O(1) \)[^3]。
---
阅读全文
相关推荐


















