如何对二维数组进行选择排序(先对行后对列)
#include<stdio.h>
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int a[n][m],j,i,k,f,temp,p;
for(i=0;i<n;i++)//输入二维数组
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)//对行进行选择排序
for(k=0;k<m;k++)
{ p=k;//p用来保存最小值的下标
for(f=k+1;f<m;f++)
if(a[i][p]>a[i][f])
p=f;
if(p!=k)
{
temp=a[i][k];
a[i][k]=a[i][p];
a[i][p]=temp;
}
}
for(i=0;i<m;i++)//对列进行选择排序
for(k=0;k<n;k++)
{ p=k;//p用来保存最小值的下标
for(f=k+1;f<n;f++)
if(a[p][i]>a[f][i])
p=f;
if(p!=k)
{
temp=a[k][i];
a[k][i]=a[p][i];
a[p][i]=temp;
}
}
for(i=0;i<n;i++)//输出二维数组
{ for(j=0;j<m;j++)
{printf("%d ",a[i][j]);}
printf("\n");
}
return 0;
}