如何对多维数组进行排序

 我来答
心愿惠是7152
2017-11-04 · 超过23用户采纳过TA的回答
知道答主
回答量:97
采纳率:0%
帮助的人:33.4万
展开全部
#include
#include

#define M 3
#define N 3

//输出二维数组的函数
void print(int a[][N])
{
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
}

//qsort的cmp函数
int cmp(const void*a, const void *b)
{
return *(int*)a-*(int*)b;
}

int main(int argc, char* argv)
{

int a[M][N]={3,2,1,9,8,7,6,5,4};

printf("按列排序前的二维数组是:\n");
print(a);
printf("\n");
int j;
for(j=0;j<N;j++)//对每一列进行升序排序
{
//对第j列进行排序
int m,n;
int t;
for(m=M-1;m>0;m--)
{
for(n=0;n<m;n++)
{
if(a[n][j]>a[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<M;i++)
{
qsort(a[i],N,sizeof(a[i][0]),cmp);
}

printf("按列排序后再按行排序后二维数组变为:\n");
print(a);
printf("\n");
system("pause");
return 0;
}
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式