c语言如何用qsort对二维数组排序

2024-12-02 13:13:38
推荐回答(1个)
回答(1):

在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序。

然而对每一列进行排序,就不能直接当成一维数组进行排序。但是仍然可以把第j列a[0...M-1][j]在逻辑上当成一维数组进行排序,下面以使用冒泡排序为例对其排序。

对二维数组按列排序后,进一步展示了如何调用快速排序函数按行进行排序。

程序源码:

 
#include #include   #define M 3#define N 3 //输出二维数组的函数void print(int a[][N]){   int i,j;   for(i=0;i0;m--)       {            for(n=0;na[n+1][j])                  {                      t=a[n][j];                      a[n][j]=a[n+1][j];                      a[n+1][j]=t;                  }            }        }     }     printf("按列排序后二维数组变为:\n");    print(a);    printf("\n");          //对按列排序后的二维数组按行升序排序 (调用快速排序函数)          int i;    for(i=0;i

编译运行后的结果如下: