最大值与最小值
来源:互联网 发布:数据地图制作 编辑:程序博客网 时间: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
- 求最大值与最小值
- 找最大值与最小值
- 最大值与最小值
- 最大值与最小值比较
- 数组最大值与最小值
- 最大值与最小值问题
- 汇编语言,找出最大值与最小值
- c++ 整型最大值与最小值
- C# 数组最大值与最小值
- 素数,最大公约数与最小公倍数,最大值与最小值
- 最大值&最小值
- 最大值-最小值
- 最大值,最小值
- 最大值最小值
- 一个求最大值与最小值的函数
- 一个求最大值与最小值的函数
- 求表中几个列中最小值与最大值
- 求表中几个列中最小值与最大值
- IP地址
- myeclipse/Eclipse工具的使用
- 以String字符串引出的Java内存机制问题
- 【2014.06.08】
- 三层架构
- 最大值与最小值
- php+redis+python网站部署方案
- 读《如何找对另一半》后感以及论自己择偶标准
- 关于linux中内核编程中结构体的赋值操作(结构体指定初始化)
- python连接mysql
- SDK编译运行时出现的Unexpected value from nativeGetEnabledTags: 0刷屏解决方法
- [leetcode] Trapping Rain Water
- 除去最大、最小值后,还有多少个,strtok的应用
- 转win8 64位+Oracle 11g 64位下使用PL/SQL Developer 的解决办法