遞迴求最大最小值演算法 分治策略 c語言實現

2021-07-10 19:32:21 字數 450 閱讀 1732

思路:運用分治的思想,將要排序的整個陣列從中間劈開,分別求其左右兩邊的最大最小值,然後將求出的最大最小值合起來進行比較。

當左右兩邊的陣列小到一定程度時:

(1)陣列中只有乙個元素,maxnum=minnum;

(2)陣列中有兩個元素,找出兩個元素中的最大最小值;

(3)陣列中大於兩個元素,從中間分開,繼續遞迴;

#include#include#includeusing namespace std;

int arr[10];

void getmax_min(int left,int right,int &maxnum,int &minnum)else if(left+1==right)else

}int main(){

for(int i=0;i<10;i++){

arr[i]=rand();//生成隨機數

cout<

C 分治法求最大最小值

可以用分治法解決的問題一定包含了諸多的子問題,這些子問題的解題方式及問題形式都與大問題一樣,並且都是可解的。所以我們利用分治法解決問題一定要先找他的最小的子問題,然後解決它,由於分治法的本質其實就是遞迴問題,所以我們最終可以解決原有問題。下面給出乙個陣列,求出其中的最大值和最小值。include u...

遞迴求陣列最大最小值(分治思想)

求陣列最大最小值我們可以用遍歷或者最簡單的排序方法來實現,但是那樣子的時間複雜度將會大很多,因此我們可以採用分治思想來求最大最小值,即先求左右兩部分,即先求出左半部分的最大最小值,再求出右半部分的最大最小值,然後再把左右兩部分的最大最小值合起來求總的最大最小值。如下 includeusing nam...

分組求最大最小值

按某一欄位分組取最大 小 值所在行的資料 資料如下 name val memo a 2 a2 a的第二個值 a 1 a1 a的第乙個值 a 3 a3 a的第三個值 b 1 b1 b的第乙個值 b 3 b3 b的第三個值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 建立表...