题目描述
对于二维矩阵,在系统内部存储时,其实是按行保存的,比如对于3*4的矩阵,先放第1行,然后放第2行,最后放第3行。
对于给定的二维矩阵,进行从小到大排序,然后进行按行排列输出。
输入
两个整数n和m(n和m均小于10),分别表示矩阵行数和列数。
接下去n行,每行m个整数。
输出
对输入的矩阵进行排序按行输出
每个数字占2个字符
样例输入
3 4
1 3 5 7
2 4 6 8
9 0 11 10
样例输出
0 1 2 3
4 5 6 7
8 9 10 11
这题的思路就是将二维数组转为一维数组,然后用二维的排序输出就好了
#include <stdio.h>
int main(){
int a[100][100],b[220];
int n,m,temp;
scanf("%d %d",&n,&m);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
}
int z=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
b[z++]=a[i][j];
}
}
for(int i=0;i<n*m-1;i++){
for(int j=0;j<n*m-1;j++){
if(b[j]>b[j+1]){
temp=b[j];
b[j]=b[j+1];
b[j+1]=temp;
}
}
}
for(int i=0;i<n*m;i++){
printf("%2d ",b[i]);
if((i+1)%m==0){
printf("\n");
}
}
}