最小与最大值
来源:互联网 发布:c语言打印糖果图形 编辑:程序博客网 时间:2024/06/06 05:01
输入:一个包含n个数的集合A
输出:集合A的最大值最小值
单一求解最大值与最小值可以通过打擂台的方法来实现,求解最大值或者最小值需要比较n-1次,若同时要求求出最大值与最小值比较的次数为2*n-2次.事实上我们有比这个更快的算法,比较次数为3n/2.具体做法为:记录已知的最小值与最大值,对输入·的元素成对进行处理,首先比较输入的这对元素,再将小的与当前最小值比较,将大的与当前最大值比较,于是每两个元素比较3次。
在设置最大值与最小值初始值时候依赖于n是偶数还是奇数,必须保准初始最大最小值后剩下元素有偶数个,这样才可以成对的比较完。
#include<iostream>using namespace std;void Find_MAx_and_Min(int a[], int n, int &min, int &max);int main(){int a[10] = { 5, -9, 8, -8, 56, 45, 21, 6, 78, 3 };int min = 0, max = 0;Find_MAx_and_Min(a, 10, min, max);cout << min << " " << max << endl;return 0;}void Find_MAx_and_Min(int a[], int n, int &min, int &max){int i = 1;if (n% 2) //若n是奇数min = max = a[0];else{ //否则n为偶数if (a[0] < a[1]){min = a[0];max = a[1];}else{min = a[1];max = a[0];}i++;}/*以上初始化min和max的值*/while (i<n-1){if (a[i] < a[i + 1]){min = min < a[i] ? min : a[i];max = max>a[i + 1] ? max : a[i + 1];}else{min = min < a[i + 1] ? min : a[i + 1];max = max>a[i] ? max : a[i];}i = i + 2;}}
0 1
- 最小与最大值
- 最小最大值
- 最大值最小问题
- csu 1307 最大值最小,
- 运算符求最小最大值
- js 获取数组最小/最大值
- Highcharts属性与Y轴数据值刻度显示Y轴最小最大值
- Highcharts属性与Y轴数据值刻度显示Y轴最小最大值
- Highcharts属性与Y轴数据值刻度显示Y轴最小最大值
- 求点1 到点n 所有路径中 最大值与最小值之差 最小的那个
- 数组分段和最大值最小问题
- 数组分段和最大值最小问题
- c++获取整型变量的最小/最大值
- RMQ维护最小最大值加二分
- codeforces594A/616B+博弈(最大值最小)
- POJ 3273 Monthly Expense 最大值最小 二分法
- 取得范围内指标最小最大值 mt5
- JFreeChart barRenderer 最大值最小值得显示问题
- java (字符串)
- 1044 Shopping in Mars
- JavaScript构造函数模式+prototype(原型)模式拓展系统类和自定义类
- bzoj1095: [ZJOI2007]Hide 捉迷藏
- struts ValueStack 详解
- 最小与最大值
- java里面的标签运用 continue label, break label
- 【ural1297】Palindrome 后缀数组
- linux shell(1)
- vs2008单元测试
- POJ2362 Square(dfs)
- lisp资源
- 算法代码实现之选择排序,Java实现
- java调用COM组件的几种工具