输出 34, 72, 85 93, 49, 28 12, 43, 48
分析:这个题目直接按照题目的意思,找到偶数行奇数行分别排序
下面是代码实现:
/************************************************************************************* 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序 例如 3行3列 的二维数组 34,85,72,93,49,28,48,12,43 输出 34, 72, 85 93, 49, 28 12, 43, 48 *************************************************************************************/ #include <stdio.h> #define N 4 void Swap (int *a, int *b) //交换数 { int temp = 0; temp = *a; *a = *b; *b = temp; } void S_L_Sort(int *Arr) //从小到大排序,选择 { int i = 0; int j = 0; int min_index = 0; for (i = 0; i < N - 1; i++) { min_index = i; for (j = i + 1; j < N; j++) { if (Arr[j] < Arr[min_index]) { min_index = j; } } if (min_index != i) { Swap(&Arr[min_index], &Arr[i]); } } } void L_S_Sort(int *Arr) //从大到小排序,冒泡 { int i = 0; int j = 0; for (i = 0; i < N - 1; i++) { for (j = 0; j < N - i - 1; j++) { if (Arr[j] < Arr[j + 1]) { Swap(&Arr[j], &Arr[j + 1]); } } } } void ArrSort(int (*Arr)[N]) { int i = 0; while (i < N) { if (i % 2 == 0) { S_L_Sort(Arr[i]); //偶数行从小到大排序 } else { L_S_Sort(Arr[i]); //奇数行从大到小排序 } i++; } } void PrintArr (int (*Arr)[N]) //打印二维数组 { int i = 0; int j = 0; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (j % 4 == 0) { printf ("\n"); } printf ("=", Arr[i][j]); } } printf ("\n"); } int main() { int Arr[N][N] = {6,51,32,16,5,46,84,3,53,46,31,35,16,54,15,3}; //定义一个4*4的二维数组 ArrSort(Arr); PrintArr(Arr); //按照要求排序并打印 return 0; }