实验原理
利用分治法查找数组元素的最大值与最小值。并计算出程序运行所需要的时间。
实验步骤
①将问题分解,如果数组中只有一个元素,那么只需要比较该元素与当前的最大值最小值并进行更新即可
②将问题扩大,数组中有多个元素,则可以通过套用二分法进行拆分,递归将整个数组拆分为多个只有一个元素的小数组,即分解为多个1问题
③最后将每一个小数组得到的结果进行比较,选取其中的最大值和最小值对存储最大值最小值的变量进行更新
关键代码
template<class type>//为了对任何类型进行比较,实际上只需要为int
int BS(type a[],int left,int right,int & max,int & min){
//第一个元素为数组,每次对数组的left和right进行更新,直到二者相等,即当前数组中只有一个元素;max和min为存储最大值和最小值的变量,必须为指针或者引用
int middle,max1,max2,min1,min2;
if(left==right){
max=a[left];
min=a[left];
}else{
middle=(left+right)/2;
BS(a,middle+1,