C 程序对矩阵的所有列和行进行排序

cserver side programmingprogramming更新于 2024/11/9 14:33:00

问题

编写代码对矩阵的所有行按升序排序,对所有列按降序排序。矩阵的大小和矩阵的元素由用户在运行时给出。

解决方案

以下解释了使用 C 编程语言对矩阵的所有行按升序排序,对所有列按降序排序的解决方案 −

用于对行按升序排序的逻辑如下 −

for (i=0;i<m;++i){
   for (j=0;j<n;++j){
     对于 (k=(j+1);k<n;++k){
          如果 (ma[i][j] > ma[i][k]){
            a = ma[i][j];
            ma[i][j] = ma[i][k];
            ma[i][k] = a;
         }
      }
   }
}

按降序对列进行排序的逻辑如下 −

for (j=0;j<n;++j){
   for (i=0;i<m;++i){
      for (k=i+1;k<m;++k){
         if (mb[i][j] < mb[k][j]){
            a = mb[i][j];
            mb[i][j] = mb[k][j];
            mb[k][j] = a;
         }
      }
   }
}

程序

以下是 C 程序按升序对矩阵的所有行进行排序,按降序对矩阵的所有列进行排序

#include <stdio.h>
void main(){
   int i,j,k,a,m,n;
   static int ma[10][10],mb[10][10];
   printf ("输入矩阵的阶
");    scanf ("%d %d", &m,&n);    printf ("输入矩阵的系数
");    for (i=0;i<m;++i){       for (j=0;j<n;++j){          scanf ("%d",&ma[i][j]);          mb[i][j] = ma[i][j];       }    }    printf ("给定矩阵为
");    for (i=0;i<m;++i){       for (j=0;j<n;++j){           printf (" %d",ma[i][j]);       }       printf ("
");    }    printf ("按升序排列行后
");    for (i=0;i<m;++i){       for (j=0;j<n;++j){           for (k=(j+1);k<n;++k){             if (ma[i][j] > ma[i][k]){                a = ma[i][j];                 ma[i][j] = ma[i][k];               ma[i][k] = a;             }          }       }     for (i=0;i<m;++i){       for (j=0;j<n;++j){           printf (" %d",ma[i][j]);       }       printf ("
");    }     printf ("按降序排列列后
");    for (j=0;j<n;++j){       for (i=0;i<m;++i){          for (k=i+1;k<m;++k){             if (mb[i][j] < mb[k][j]){                a = mb[i][j];                mb[i][j] = mb[k][j];                mb[k][j] = a;             }          }       }    }    for (i=0;i<m;++i){       for (j=0;j<n;++j){          printf (" %d",mb[i][j]);       }       printf ("
");    } }

输出

当执行上述程序时,它会产生以下结果 −

输入矩阵的阶数
3 4
输入矩阵的系数
1
2
3
4
1
2
3
4
5
1
2
3
给定的矩阵是
1 2 3 4
1 2 3 4
5 1 2 3

按升序排列行后
1 2 3 4
1 2 3 4
1 2 3 5

按降序排列列后
5 2 3 4
1 2 3 4
1 1 2 3

相关文章