找出数据集合中的最小值和最大值的两种算法比较
来源:互联网 发布:阿里实时数据 编辑:程序博客网 时间:2024/06/05 23:51
最小值和最大值
—— 算导笔记
实现太过于简单以至于算导里面都不讲代码实现,只是简单介绍了理论.
通常寻找最大值最小值的方法
方法一:
void max_min(int* array,int size,int* max){int tmp = 0;for(tmp = 0,*max = array[0];tmp < size;tmp++){*max = *max > array[tmp] ? *max : array[tmp];}}
这里如果寻找最小值同理
可以发现如果同时要求找到最小值和最大值需要比较2*size次
有没有更快的方法呢?
方法二:
/**************************************************************************code writer:EOFcode date:2014.09.21code file:min_max.ce-mail:jasonleaster@gmail.comcode description:A faster way to find min and max value in data array.#BUG1:for(tmp = 0,*min = array[0],array[1];tmp < size;tmp += 2)fix it up by:licoderli for(tmp = 0,*min = array[0],*max = array[1];tmp < size;tmp += 2)Thanks licoderli.**************************************************************************/#include <stdio.h>void max_min(int* array,int size,int* min,int* max){int tmp = 0;for(tmp = 0,*min = array[0],*max = array[1];tmp < size;tmp += 2){if(array[tmp] < array[tmp+1]){*min = *min < array[tmp] ? *min : array[tmp];*max = *max > array[tmp+1] ? *max : array[tmp+1];}else{*min = *min < array[tmp+1] ? *min : array[tmp+1];*max = *max > array[tmp] ? *max : array[tmp];}}}int main(){int array[10] = {2,3,7,1,9,6,4,5,8,0};int size = sizeof(array)/sizeof(array[0]);int tmp = 0;int min = 0;int max = 0;for(tmp = 0;tmp < size;tmp++){printf("%3d",array[tmp]);}printf("\n");max_min(array,size,&min,&max);printf("min:%4d max:%4d\n",min,max);return 0;}
而这种方法会把比较次数降低到3*size/2 次
感谢licoderli, ta在2014.09.28. 发现并修正了代码中*max 没有初始化的问题
能够认真看程序的人很难得
—— EOF
0 0
- 找出数据集合中的最小值和最大值的两种算法比较
- 【C++基本功补习】查找三个数据中的最大值、最小值、中间值,两种实现方案比较
- 【算法导论】同时找出最大值和最小值
- 同时找出数组的最大值和最小值
- 找出最大值和最小值的时间复杂度比较小的一种方法
- 同时找出最小值和最大值
- 同时找出最大值和最小值
- 通过循环找出一组数据的最大值和最小值的小技巧
- 比较三个数的最大值和最小值
- Java-找出数组里的最大值和最小值
- 同时找出在数组中的最大值、最小值
- numpy找出array中的最大值,最小值
- 输出整形数据的最大值和最小值
- java实现查找List集合中的最大值和最小值
- [算法导论]在一个数组中寻找最大值和最小值所需要进行比较的次数
- 关于在一个无序数组中的数求最大值和最小值的最小比较次数
- 给定n个数,要求比较次数1.5n同时找出最大值和最小值
- JAVA冒泡排序/JAVA冒泡排序再找出给定数据中的最大值最小值/JAVA数组排序
- Saving Tang Monk - HDU 5025 搜索
- 国家自然科学基金2014【深度学习】
- i love dingning
- JBOSS5.1.0.GA JDK1.6.0_07 下部署tomcat web工程
- JavaScript与函数式编程
- 找出数据集合中的最小值和最大值的两种算法比较
- linux crontab
- 深刻理解JavaScript基于原型的面向对象
- VS2010 设置所有工程默认配置路径
- java类打包成jar文件&&jar包的引入
- Frog - HDU 5037 想法题
- STL内存管理
- Android应用程序的Activity启动过程简要介绍和学习计划
- 数组中出现次数超过一半的数