c - 在 C 中对多维数组列进行排序

标签 c arrays sorting multiple-columns

<分区>

我有一些 C 代码:

#include <stdio.h>
#include <stdlib.h>

int multiply(int);

int main() {
    FILE *fp;
    int i, j, n, m,
        matrix[99][99],
        sum = 0,
        columnSums[99] = {0};

    fp = fopen("data.txt", "r");
    if(fp != NULL) {
        fscanf(fp, "%d", &n);
        fscanf(fp, "%d", &m);

        for(i = 0; i < n; i++) {
            for(j = 0; j < m; j++) {
                fscanf(fp, "%d", &matrix[i][j]);
            }
        }

        for(i = 0; i < m; i++) {
            for(j = 0; j < n; j++) {
                sum += multiply(matrix[j][i]);
            }
            columnSums[i] = sum;
            sum = 0;
        }
    } else {
        puts("Cannot read the file!");
    }
    puts("");
    system("pause");
    return 0;
}

int multiply(int thisNum) {
    return thisNum * thisNum *thisNum;
}

我的任务要求我从文本文件中读取多维数组,然后通过将每个列成员乘以自身三倍的加法对每一列进行排序。 读取一个数组并找到每一列的加法并将其存储到另一个存储每一列的加法的数组中并不难(希望这会有所帮助),但我坚持将它整理出来。有什么建议吗? :)

最佳答案

您可以使用 qsort()。不要忘记包含 stdlib.h

#define ARR_SIZE(a) (sizeof(a) / sizeof(*(a)))

int comp(const void* a, const void* b)
{
    return *(const int*)a - *(const int*)b;
}

...

for (i = 0; i < ARR_SIZE(matrix); i++)
{
    qsort(matrix[i], ARR_SIZE(matrix[i]), sizeof matrix[i][0], comp);
}

关于c - 在 C 中对多维数组列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14943406/

相关文章:

c - Go 编译器运行时的语法和语义

C 数据类型的取值范围是 "system"依赖?

c - 字符串在栈上的分配

java - 将我的 32 字符 int 转换为 32 字节数组,就像 Java 中一样

javascript - 如何根据对象列表的一个或两个键来比较和分离对象列表的数组

c++ - 插入排序问题?

c - 将字符串数组分配和检索给 void 指针

arrays - 排序 d 排序数组的算法

python - 在Python中实现中值选择算法的中值

java - 如何为 JTable 中的单个列提供多个排序选项?