分治法的經典問題 求數列中最大最小值

2021-07-25 03:33:17 字數 1061 閱讀 7529

前面我們已經了解了分治法的原理和使用,分治法的經典問題——大整數相乘,趁熱打鐵,來學習一下如何使用分治法來求數列中的最大最小值。

printf("getmaxmin的值:%d, %d\n", m[0], m[1]);

return m;

}//m[0]存放最小值,m[1]存放最大值

int* maxmin(int a, int n1, int n2)else

if((n2 - n1 + 1) == 2)else

printf("rm得到的值:%d, %d\n", rm[0], rm[1]);

int* result = new

int[2];

if(lm[0] < rm[0])else

if(lm[1] < rm[1])else

return result;

}}int main();

int* result = maxmin(a, 0, 7);

printf("最大值為:%d,最小值為:%d", result[1], result[0]);

}結果如下:

分治法求陣列最大最小值

常規的做法是遍歷一次,分別求出最大值和最小值,但我這裡要說的是分治法 divide and couquer 將陣列分成左右兩部分,先求出左半部份的最大值和最小值,再求出右半部份的最大值和最小值,然後綜合起來求總體的最大值及最小值。這是個遞迴過程,對於劃分後的左右兩部分,同樣重複這個過程,直到劃分區間...

分治法的經典問題 大整數相乘

討論問題時,先來了解一下什麼是分治法。分治法的意思就是,分而治之,也就是把乙個問題,拆分成幾個小問題,最後再彙總解決的方法 假如現在我們要求兩個大整數相乘的乘積,如1234 1234 這裡為了了分析簡便,所以不舉形如1234567891234567這樣的大整數,不必要在此糾結 那麼按照我們小學學的乘...

利用分治法求一組資料中最大的兩個數和最小的兩個數。

利用分治法求一組資料中最大的兩個數和最小的兩個數。在這裡插入 片 include define n 10 void max min int a,int m,int n,int min1,int min2,int max1,int max2 int main void int min1,min2 in...