支军队正在进行阅兵前的训,训陈前队列排队是一个难题。该队列是一个n*n的方阵,排队要求是后一排的最低的不比前一排最高的低,同时要求偶数行从小到大排列,奇数行从大到小排列(行数从第0行开始,O为偶数)。输λn及η*n个身高数据〈身高数据为整型),按要求处理后输岀
n队列身高数据(每个身高数据占4个字符宽度)。
/*对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序*/ #include <stdio.h> #define N 100 void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp; } void my_sort(int num,int a[][N]) { int k = 0; int i = 0; int j = 0; for(i = 0;i < num;i++) { if(i%2 == 0) { for(j = 0;j < num;j++) { for(k = j+1;k < num;k++) { if(a[i][k] < a[i][j]) { swap(&a[i][k],&a[i][j]); } } } } else { for(j = 0;j < num;j++) { for(k = j+1;k < num;k++) { if(a[i][k] > a[i][j]) { swap(&a[i][k],&a[i][j]); } } } } } } void bubble_sort(int a[], int n) { int i,j,temp; for (j=0;j<n-1;j++) { for (i=0;i<n-1-j;i++) { if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } } } } void repair(int num,int a[][N]){ int last =num-1;//2 int setindex=num-2;//1 int i,j,x=0,y=0; int tmep[N]; for(i=setindex;i<num;i++){ for(j=0;j<num;j++){ tmep[x++]=a[i][j]; } } bubble_sort(tmep,x); x=0; for(i=setindex;i<num;i++){ for(j=0;j<num;j++){ a[i][j]=tmep[x++]; } } my_sort(num,a); } int main() { int N_line = 0; int a[N][N] = {0}; int i = 0; int j = 0; scanf("%d",&N_line); for(i = 0;i < N_line;i++) { for(j = 0;j < N_line;j++) { scanf("%d",&a[i][j]); } } my_sort(N_line,a); repair(N_line,a); for(i = 0;i < N_line;i++) { for(j = 0;j < N_line;j++) { printf("%d ",a[i][j]); } printf(" "); } return 0; }