最小與最大值

2021-07-10 04:40:37 字數 804 閱讀 4969

輸入:乙個包含n個數的集合a

輸出:集合a的最大值最小值

單一求解最大值與最小值可以通過打擂台的方法來實現,求解最大值或者最小值需要比較n-1次,若同時要求求出最大值與最小值比較的次數為2*n-2次.事實上我們有比這個更快的演算法,比較次數為3n/2.具體做法為:記錄已知的最小值與最大值,對輸入·的元素成對進行處理,首先比較輸入的這對元素,再將小的與當前最小值比較,將大的與當前最大值比較,於是每兩個元素比較3次。

在設定最大值與最小值初始值時候依賴於n是偶數還是奇數,必須保準初始最大最小值後剩下元素有偶數個,這樣才可以成對的比較完。

#includeusing namespace std;

void find_max_and_min(int a, int n, int &min, int &max);

int main();

int min = 0, max = 0;

find_max_and_min(a, 10, min, max);

cout << min << " " << max << endl;

return 0;

}void find_max_and_min(int a, int n, int &min, int &max)

else

i++;

} /*以上初始化min和max的值*/

while (ia[i + 1] ? max : a[i + 1];

} else

i = i + 2;

}}

最大值 最小值

求最大最小的時候有點小技巧,就是我們兩個兩個的比較,把大個跟當前最大比較,小的跟當前最小的比較,這樣就會節約一點比較時間,有原來的2 n到3 n 2。include include 得到最大最小值 int getmaxmin int ndata,int nlen,int pnmax,int pnmi...

最大值最小化(最大值盡量小)

from 給出是個序列,如1 2 3 2 5 4 將其劃分成m個連續的子串行,每個子串行最少有乙個元素,怎樣使每個子串行的和的最大值最小 include include using namespace std define n 10 define inf 1000 int juge int a,in...

int float double 最大值,最小值

中沒有double的最大最小值。如果輸出的比如 100lf輸出2.23432432,沒有達到100位,則最後2後面不一定都是0。原文見view plaincopy to clipboardprint?coder acboy date 2010 3 1 include include using na...