#include <stdio.h> #define SWAP(A,B) {A ^= B; B ^= A; A ^= B;} void find_max_min(int arr[],int len) { int i,max,min; /* * 第一次遍历数组: * 把两两比较的结果 * 较大的数放到下标是偶数的位置里 * 较小的数放到下标是奇数的位置里 */ for(i = 0; i < len - 3; i += 2) { if(arr[i] < arr[i + 1]) SWAP(arr[i],arr[i + 1]); } /* * 默认偶数下标组成的数组中第一个为最大数,奇数下标组成的数组中第一个最小 */ max = arr[0]; min = arr[1]; /* * 第二次遍历偶数下标数组找最大: */ for(i = 0; i < len - 3; i += 2) if(max < arr[i]) max = arr[i]; /* * 第三次遍历奇数下标数组找最小: */ for(i = 1; i < len - 3; i += 2) if(min > arr[i]) min = arr[i]; printf("max = %d,min = %d\n",max,min); } int main() { int data[] = {6,2,78,23,89,2,4,6,911,2,42,83,954,2,4,64}; int len = sizeof(data) / sizeof(data[0]); find_max_min(data,len); }