整数二维数组排序 c++

来源:百度知道 编辑:UC知道 时间:2024/06/07 18:55:17
按字典顺序输出
例如数组是:
1 2 5 7 9
1 2 4 8 6
5 6 9 0 4
2 5 7 8 5
输出时是:
1 2 4 8 6
1 2 5 7 9
2 5 7 8 5
5 6 9 0 4
谢谢了!

以下程序经过测试
输入:
12579
12486
56904
25785
输出:
12486
12579
25785
56904

#include <stdio.h>
#include <string.h>

#define N 4
#define M 5

main()
{
char array[N][M+1],*a[N],*p;
int i,j,k;

printf("input a array:\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
scanf("%c",&array[i][j]);
}
getchar();
array[i][M]=0;
}

for(i=0;i<N;i++)
{
a[i]=array[i];
}

for(i=0;i<N;i++)
{
k=i;//默认i最小
for(j=i+1;j<N;j++)
{//循环找最小的
if(strcmp(a[i],a[j])>0)
{//发现j更小
k=j;
}
}
if(k!=i)
{//找到其他最小的,需要交换
p=a[i];
a[i]=a[k];
a[k]=p;
}
}

for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%c",a[i][j]);
}
printf("\n");
}
}