分治法求数组的最大最小值

来源:互联网 发布:用户充值管理系统php 编辑:程序博客网 时间:2024/04/28 07:55

分治法的思想就是每次将数组一分为二,分别求两部分的最大值与最小值,然后比较哪部分的更大和更小,最后得出整个数组的最大最小值。

源代码如下:

/************************************************************************//*函数功能:分治法求double型数组的最大最小值参数:double array[] 待求数组  int low,int high 数组的最小和最大下标       double &maxValue,double &minvalue 最大最小值的引用(返回值)*//************************************************************************/void getMaxMinValue(double array[],int low,int high,double &maxValue,double &minvalue){double LMin,Lmax;//声明左侧最大值和最小值变量double RMin,Rmax;//声明右侧最大值和最小值变量if (low == high)//仅有一个元素{maxValue = array[low];minvalue = array[low];return ;}if ((low+1) == high)//仅有2个元素{if (array[low] > array[high]){maxValue = array[low];minvalue = array[high];}else{maxValue =array[high];minvalue= array[low];}return ;}int mid=(high+low)/2;getMaxMinValue(array,low,mid-1,Lmax,LMin);//分治getMaxMinValue(array,mid,high,Rmax,RMin);if (Lmax > Rmax)//判断哪边的最小,哪边的最大{maxValue=Lmax;}elsemaxValue =Rmax;if (LMin<RMin){minvalue = LMin;}elseminvalue = RMin;return ;}


0 0