#include<stdio.h>
int main(){
int t,m,n,a[100][100],max;
int num[50];
scanf("%d %d",&m, &n);
for(int i=0;i<m*n;i++){
scanf("%d",&num[i]);
} //输入数字(一维数组)
//m=3;n=3; // 调试
//int num[50] = {1,2,3,4,5,6,7,8,9};//直接写出数据(调试用)
for(int i=0;i<m*n;i++){
for(int j=i+1;j<m*n;j++){
if (num[i]>num[j]){
t = num [i];
num [i] = num [j];
num [j] = t;
}
if(i == m*n){
i = m*n;
}
}
} //从小到大排序 */
int y=0;
for(int i=0;i<m;i++){
if(i%2 == 0){
for(int j=n-1;j>=0;j--){
a[i][j] = num[y];
y++;
}
}else{
for(int j=0;j<n;j++){
a[i][j] = num[y];
y++;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
printf("%d ",a[i][j]);
}
if(i<m){
printf("\n");
}
} //输出数组
return 0;
}
写出来没用多久,主要是修改的时候一直有个问题无法解决:输出的数组有的地方有0而不是本该输出的数字。困扰了好久,得出了一个结论论:数组下标和数组长度不能混淆是要刻在脑子里的。之前就是因为for循环里写的是
for(int i=0;i<n;i++){
a[j][y] = num[i];
i++;
}
没有意识到m的输入是二维数组的行数而非下标(i),两天之后才发现这个问题,只能说是个教训,以后不那再犯!!!