最大值与最小值

来源:互联网 发布:数据地图制作 编辑:程序博客网 时间:2024/05/22 08:11
#include <stdio.h>#include <stdlib.h>#define BUFSIZE 8// 2n-2次比较void GetMinMax(int *arr, int n, int *min, int *max){*min = *max = arr[0];for (int i = 1; i < n; i++) {if (arr[i] < *min)*min = arr[i];if (arr[i] > *max)*max = arr[i];}}// 3n/2次比较void GetMinMax2(int *arr, int n, int *min, int *max){if (n % 2 == 1) { // 含有奇数个元素的情况*min = *max = arr[0];for (int i = 1; i < n; i += 2) {if (arr[i] < arr[i + 1]) {if (arr[i] < *min)*min = arr[i];if (arr[i + 1] > *max)*max = arr[i + 1];} else {if (arr[i + 1] < *min)*min = arr[i + 1];if (arr[i] > *max)*max = arr[i];}}} else { // n % 2 == 0 // 含有偶数个元素的情况if (arr[0] < arr[1]) { // 3n/2-2次比较 *min = arr[0];*max = arr[1];} else {*min = arr[1];*max = arr[0];}for (int i = 2; i < n; i += 2) {if (arr[i] < arr[i + 1]) {if (arr[i] < *min)*min = arr[i];if (arr[i + 1] > *max)*max = arr[i + 1];} else {if (arr[i + 1] < *min)*min = arr[i + 1];if (arr[i] > *max)*max = arr[i];}}}}int main(){int arr[BUFSIZE] = {23, 2, 34, 20, 3, 234, 76, 90};int len = sizeof(arr) / sizeof(arr[0]);int min, max;GetMinMax(arr, len, &min, &max);printf("min = %d, max = %d\n", min, max);GetMinMax2(arr, len, &min, &max);printf("min = %d, max = %d\n", min, max);system("pause");return 0;}

0 0
原创粉丝点击