1
我有一個二維矩陣如何轉置二維矩陣存儲爲C一維數組
1 2 3
4 5 6
7 8 9
保存在C這樣
int array[9] = {1,2,3,4,5,6,7,8,9};
,我想獲得像這樣的矩陣轉置
int array_t[9] = {1,4,7,2,5,8,3,6,9};
沒有將原始數組轉換爲2D模式。如何才能做到這一點?
我有一個二維矩陣如何轉置二維矩陣存儲爲C一維數組
1 2 3
4 5 6
7 8 9
保存在C這樣
int array[9] = {1,2,3,4,5,6,7,8,9};
,我想獲得像這樣的矩陣轉置
int array_t[9] = {1,4,7,2,5,8,3,6,9};
沒有將原始數組轉換爲2D模式。如何才能做到這一點?
這可以通過切換通常用於索引索引的循環來完成。如果你想你可以查找原始矩陣通過它與像這樣
for (i = 0; i < 3; ++i) {
for (j = 0; j < 3; ++j) {
printf("%d ", array[j + i * 3]);
}
printf("\n");
}
如果我們切換i
和j
循環,我們可以得到所需的輸出如下面的示例程序
#include <stdio.h>
int main() {
int array[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int i, j;
for (j = 0; j < 3; ++j) {
for (i = 0; i < 3; ++i) {
printf("%d ", array[j + i * 3]);
}
printf("\n");
}
}
這與2D矩陣的轉置的數學定義有關。二維矩陣上的轉置操作將行與列交換,在C程序中,當我們索引它時,我們交換了我們的行和列循環。
非常優雅的解決方案,可以很容易地修改成爲一般轉置功能。 –