基础算法(1):最值(最大值,最小值,同时求最大值和最小值)
来源:互联网 发布:软件助手下载 编辑:程序博客网 时间:2024/05/20 20:20
一.寻找最小值和最大值。
方法: 遍历一遍元素集合,获得最值。
最小值:
- void findMin(const vector<int> &num, int &min)
- {
- min = num[0];
- vector<int>::const_iterator iter;
- /*常量引用使用 const_iterator; 非常量使用 iterator*/
- for (iter = num.begin(); iter != num.end(); ++iter)
- {
- if (*iter < min)
- min = *iter;
- }
- }
最大值:
- void findMax(const vector<int> &num, int &max)
- {
- max = num[0];
- vector<int>::const_iterator iter;
- /*常量引用使用 const_iterator; 非常量使用 iterator*/
- for (iter = num.begin() + 1; iter != num.end(); ++iter)
- {
- if (*iter > max)
- max = *iter;
- }
- }
二.同时寻找最小值和最大值。
方法:
1.一般方法, 遍历元素分别与最小值和最大值比较。共需要比较2n-2次。
2.优化方法, 每次读入两个元素,先比较这两个元素的大小,然后把大的与最大值比较,
小的与最小值比较。
- void findMinAndMax(const vector<int> &num, int &min, int &max)
- {
- if (num.size() == 1)
- {
- max = min = num[0];
- }
- else
- {
- num[0] >= num[1] ? max = num[0], min = num[1] :
- max = num[1], min = num[0];
- vector<int>::const_iterator iter;
- for (iter = num.begin() + 1; iter + 1 != num.end(); ++iter)
- {
- if (*iter >= *(iter + 1))
- {
- if (*iter > max) max = *iter;
- if (*(iter + 1) < min) min = *(iter + 1);
- }
- else
- {
- if (*(iter + 1) > max) max = *(iter + 1);
- if (*iter < min) min = *iter;
- }
- }
- }
- }
0 0
- 基础算法(1):最值(最大值,最小值,同时求最大值和最小值)
- 基础算法(1):最值(最大值,最小值,同时求最大值和最小值)
- 【算法导论】同时求数组的最大值和最小值
- 同时求数组的最大值和最小值的分治算法
- 求最大值和最小值
- 求最大值和最小值
- 求最大值和最小值
- 【算法导论】同时找出最大值和最小值
- 同时找出最小值和最大值
- 同时找出最大值和最小值
- 同时查找最大值和最小值
- 同时找到最大值和最小值
- 函数求最大值和最小值
- 同时求数列的最大值与最小值
- 【算法导论】最大值和最小值
- STL算法------最小值和最大值
- 算法导论系列文章之同时查找最大值和最小值
- 求最大值与最小值
- SWT_Tree的使用.
- 实战CentOS 6.3安装配置supervisor进程管理工具
- iframe加载完成前图片提示
- JAVA String.format 方法使用介绍
- 编程语录
- 基础算法(1):最值(最大值,最小值,同时求最大值和最小值)
- 错误:Illegal attempt to associate a collection with two open sessions
- 问题分解,分治与动态规划
- 测井曲线名称汇总
- Cracking the coding interview--Q3.4
- android 模拟home键效果 返回桌面
- OTA差分包制作
- div style常用属性和实例代码
- DbContext 如何发现模型和数据库连接