【发布时间】:2020-11-24 15:39:22
【问题描述】:
如何通过C中的行总和对矩阵进行排序?
例如:
第一个矩阵是:
M1 = [1, 2, 3, 4]
[9, 10, 11, 12]
[5, 6, 7, 8]
我想得到这个(降序):
M2 = [9, 10, 11, 12]
[5, 6, 7, 8]
[1, 2, 3, 4]
第一行的总和 - 1+2+3+4=10
第二行的总和 - 9+10+11+12=42
第三行的总和 - 5+6+7+8=26
第二行的总和 > 第三行的总和 > 第一行的总和
初步实施:
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("***Program***\n\n");
int k=4;
int v=4;
int M[k][v], i, j, sumrow;
for(i=0; i<k; i++)
for(j=0; j<v; j++)
{
printf("\n%d. row element and %d. column element: ", j+1, i+1);
scanf("%d", &M[i][j]);
}
printf("\n\n***Print Matrix***:");
for(i=0; i<k; i++)
{
printf("\n");
for(j=0; j<v; j++)
printf("%d ", M[i][j]);
}
printf("\n\n");
for(i=0; i<k; i++)
{
sumrow=0;
for(j=0; j<v; j++)
sumrow+=M[i][j];
printf("\nSum of %d. row : %d", i+1, sumrow);
}
printf("\n\n");
}
提前致谢!
【问题讨论】:
-
你有初始实现吗?
-
你还在纠结什么?请关注以下问题之一:a) 正确存储矩阵 b) 对简单的整数数组进行排序 c) 确定行的总和 d) 交换两行 对于所有您没有问题的问题,请提供 @ 987654321@,让您更轻松地解决眼前的问题。
-
您可以编写一个可与标准 C
qsort()函数一起使用的比较器。这并不是特别容易,尤其是因为每次比较时都必须计算每行的行总和(如果矩阵很宽,则速度很慢),并且您无法获得有用(重要)的信息,例如作为参数传递的行大小到功能。如果您正在编写自己的排序代码,则可以预先计算行和,然后对行和数组和矩阵进行并行排序。但是你没有显示你在哪里遇到问题。您需要展示您尝试过的内容并解释您遇到的问题。 -
以防万一这与家庭作业有关:meta.stackoverflow.com/questions/334822/…