#include <stdio.h>
void getMaxandMin(int array[], int len){//普通求法
int max = array[0];
int min = array[0];
for(int i = 1; i < len; i++){
if(max < array[i])
max = array[i];
if(min > array[i])
min = array[i];
}
printf("max = %d ", max);
printf("min = %d\n", min);
}
void devideMax_Min(int array[],int &max, int &min, int m, int n){//分治法求最大最小值
if(m == n){
max = array[m];
min = array[n];
printf("m = %d n = %d max = %d min = %d\n",m,n, max, min);
}
if(m == (n - 1)){
if(array[m] < array[n]){
max = array[n];
min = array[m];
printf("m = %d n = %d max = %d min = %d\n",m,n, max, min);
}else{
max = array[m];
min = array[n];
printf("m = %d n = %d max = %d min = %d\n",m,n, max, min);
}
}
if((n - m) >= 2){
int p = (n + m) / 2;
devideMax_Min(array , max, min, m, p);
int max1 = max;
int min1 = min;
devideMax_Min(array, max, min, p+1, n);
if(max < max1)
max = max1;
if(min > min1)
min = min1;
printf("m = %d n = %d max = %d min = %d\n",m,n, max, min);
}
}
分治法求最大最小值
最新推荐文章于 2025-10-14 09:13:08 发布
1万+

被折叠的 条评论
为什么被折叠?



