c - 如何转置存储为 C 1D 数组的 2D 矩阵

标签 c arrays matrix

我有一个二维矩阵

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};

无需将原始数组转换为二维数组。如何做到这一点?

最佳答案

这可以通过切换通常用于索引它的循环来完成。如果你想要原始矩阵,你可以像这样遍历它

for (i = 0; i < 3; ++i) {
    for (j = 0; j < 3; ++j) {
        printf("%d ", array[j + i * 3]);
    }
    printf("\n");
}

如果我们切换 ij 循环,我们可以获得所需的输出,如以下示例程序所示

#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");
    }
}

这与二维矩阵转置的数学定义有关。二维矩阵的转置操作将行与列交换,在 C 程序中,当我们对其进行索引时,我们交换行和列循环。

关于c - 如何转置存储为 C 1D 数组的 2D 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404915/

相关文章:

c++ - 如何使用free删除链表

c - C 在外部声明一个非常量变量 'const' 是否合法?

c - 奇怪的 : printf() affects variable value

python - 如何在Python中比较两个数组并找到最佳匹配?

r - 如何替换从左下角到右上角的对角线下方矩阵中的值?

python - 在 scipy 中按稀疏矩阵分组并返回矩阵

c++ - MPI_Scatterv 仅分散自定义 MPI_Datatype 的一部分

ios - NSSortDescriptor 问题与排序单位和双位数

javascript - 将数组项追加到自身

python - numpy/pandas 矩阵乘法的多线程?