算法8:一个整数数组里怎么同时找最大和最小的数,尽量优化比较次数
2017-03-08 14:17
495 查看
解题思路
n个大小的整数数组思路1:遍历整个数组分别得出最大值和最小值,比较次数为2n
思路2:取两个数进行比较,大的与当前最大值比较,小的与当前最小值比较,则没两个数要比较3次,比较次数为1.5n
c++代码
//取两个数进行比较,小的数跟当前最小值比较,大的数跟当前最大值比较 void GetMinMax(int* buffer,int& bufferLen,int& max, int& min) { if(buffer == NULL || bufferLen <= 0) { cout<<"buffer is empty or wrong"<<endl; return; } int i = 0; int j = bufferLen -1; min = buffer[0]; max = buffer[0]; while(i <= j) { if(buffer[i] < buffer[j]) { if(buffer[i] < min) { min = buffer[i]; } if(buffer[j] > max) { max = buffer[j]; } } else { if(buffer[j] < min) { min = buffer[j]; } if(buffer[i] > max) { max = buffer[i]; } } i++; j--; } }
测试代码
int _tmain(int argc, _TCHAR* argv[]) { int buffer[10] = {9,6,1,7,10,2,4,5,8,-1}; int bufferLength = 10; int min = 0; int max = 0; GetMinMax(buffer,bufferLength,max,min); cout<<"min = "<<min<<" max = "<<max<<endl; return 0; }
相关文章推荐
- 求一个数组中的最大值和最小值,要求将比较次数减小至3N/2
- 设定二维整数数组B[0..m-1,0..n-1]的数据在行,列方向上都按从小到大的顺序排序,且整形变量x中的数据在B中存在。设计一个算法,找出一对满足B[i][j]=x的I,j值,要求比较次数不超过m
- 同时寻找最大数和最小数的最优算法以及寻找最大的两个数所需的最少比较次数
- 同时寻找最大数和最小数的最优算法以及寻找最大的两个数所需的最少比较次数
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 关于在一个无序数组中的数求最大值和最小值的最小比较次数
- [算法导论]在一个数组中寻找最大值和最小值所需要进行比较的次数
- 设一个长度为10的整型数组, 0)要求每个元素的值通过scanf输入,输入完成后, 1)请顺序输出这些整数, 2)请倒序输出这些整数, 3)输出这些数中的最大值, 4)输出这些数中的最小值
- 问题描述如下: 有2.5亿个整数(这2.5亿个整数存储在一个数组里面,至于数组是放在外存还是内存,没有进一步具体说明); 要求找出这2.5亿个数字里面,不重复的数字的个数; 另外,可用的内存限定为600M; 要求算法尽量高效,最优;
- 一个无序整数数组,数组元素大于5个,请用一种高效的算法找出其中最大的5个值.
- 最大最小值:给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。
- 笔试题&面试题:给定n个数,要求比较次数1.5n同时找出最大值和最小值
- 最大最小值:给n个实数,求它们之中的最大值和最小值,要求比较次数尽量小。
- 从三个排好序的整数数组中分别选一个元素,使得这三个元素的最大差最小
- 算法数据结构C++实现7 - 同时查找最大值和最小值优化算法
- 在N个不同元素的数组A中,同时找到它的最大元素和最小元素,设A中的元素可以直接比较大小
- 面试题--尽可能的减少求一个数组的最大最小值的比较次数
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 求一个数组中的最大值和最小值的算法改进 php 实现
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]