把长度为9的数组a中最小值放在元素a[0]、最大值放在元素a[1],次小值放在a[2],次大值放在a[3],以此类推。。。
我想了很久。。
#include <stdio.h> #define SIZE 9 void sort(int *, int); void display(int *, int); void swap(int *, int *); int main(void) { int arr1[SIZE] = { 4, -1, 2, 8, 9, 5, 38, 47, 53 }; int arr2[SIZE], i, j; sort(arr1, SIZE); for(i = SIZE - 1, j = 1; i > SIZE / 2; i--, j += 2) { arr2[j] = arr1[i]; } for(i = 0, j = 0; i < SIZE / 2 + 1; i++, j += 2) { arr2[j] = arr1[i]; } display(arr2, SIZE); return 0; } void sort(int * arr, int size) { int i, j, k; for(i = 0; i < size - 1; i++) { k = i; for(j = i + 1; j < size; j++) { if(arr[j] < arr[k]) { k = j; } } if(k != i) { swap(arr + i, arr + k); } } } void display(int * arr, int size) { int i; for(i = 0; i < size; i++) { printf("%d ", arr[i]); } puts(""); } void swap(int * p1, int * p2) { *p1 ^= *p2; *p2 ^= *p1; *p1 ^= *p2; }运行结果: