在一N个整数查找序列中的最大数和最小数, 及 所需要的比较次数?
2013-04-13 22:58
246 查看
在一N个整数查找序列中的最大数和最小数 及 所需要的比较次数?
思路:同时取出两个数,比较它们的大小,结果中大的数同当前max比较,小的数同当前min比较。
比较第一组需要的次数+比较剩余每一组数需要的次数偶数个数,比较次数大致为:1+(1+2)*(N-2)/2 次,奇数个数:1+(1+2)*(N-2-1)/2 +1次
参考文献:
http://www.2cto.com/kf/201107/95795.html
思路:同时取出两个数,比较它们的大小,结果中大的数同当前max比较,小的数同当前min比较。
比较第一组需要的次数+比较剩余每一组数需要的次数偶数个数,比较次数大致为:1+(1+2)*(N-2)/2 次,奇数个数:1+(1+2)*(N-2-1)/2 +1次
#include <stdio.h> #define N 12 void get_min_max(const int *num, int size,int *min, int *max) { int i; int g_min; int g_max; *min=*(num); *max=*(num); for( i=1;i<size;i=i+2) { if(i+2<size){ g_max=*(num+i); g_min=*(num+i+1); if(*(num+i)<*(num+i+1)){ g_min=*(num+i); g_max=*(num+i+1); } *min=*min<g_min?*min:g_min; *max=*max>g_max?*max:g_max; } else{ *min=*min<*(num+i)?*min:*(num+i); *max=*max>*(num+i)?*max:*(num+i); } } } int main(void) { int array ={10,4,6,7,3,1,13,5,6,11,3,67}; int min; int max; get_min_max(array,N,&min,&max); printf("min=%d,max=%d\n",min,max); return 0; }
参考文献:
http://www.2cto.com/kf/201107/95795.html
相关文章推荐
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- [算法导论]在一个数组中寻找最大值和最小值所需要进行比较的次数
- 算法8:一个整数数组里怎么同时找最大和最小的数,尽量优化比较次数
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- 求整数序列中出现次数最多的数
- 如何不使用比较和判断查找最大值
- 求整数序列中出现次数最多的数
- 最大子序列和的四种求解算法及其时间比较
- 算法基础-例1:求有限整数序列中最大值的算法
- 最大子序列的查找的python 实现
- 面试题:n个整数的序列,其中一个整数重复次数超过一半,在O(n)时间内找出该整数
- 编写一个程序,从标准输入中读取若干string对象并查找连续重复出现的单词。所谓连续重复出现的意思是:一个单词后面紧跟着这个单词本身。要求记录连续重复出现的最大次数以及对应的单词
- 关于在一个无序数组中的数求最大值和最小值的最小比较次数
- 1、对一个正整数算到1需要的最少操作次数
- 如何查找数组中和最大的子序列
- 64 求整数序列中出现次数最多的数
- 网易面试题之小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. 现在给出一个N,需要求
- [面试题]用最少的比较次数找出一个数组中的最大值和次大值
- 查找一个序列的最大值和最小值
- 数组-10. 求整数序列中出现次数最多的数(15)