同時得到最大最小值的最優演算法

2021-07-07 06:52:52 字數 795 閱讀 1023

首先,我們將一對輸入元素進行比較,然後把較小的值與最小值比較,較大值與最大值比較。這樣,每兩個元素共需3次比較。

如果n是奇數,就把最大最小值的初值都設為第乙個元素的值,然後成對處理剩下的元素;如果n是偶數,則先比較前兩個元素,決定最大最小值的初值,然後成對處理剩下的元素。

#include "stdafx.h"

struct max_min

;struct max_min maxandmin(int a, int len)

//如果是偶數,則先比較前兩個元素,然後成對處理後面元素。

else

else

i = 2;

}for (i; i < len; i += 2)

else

//然後將較大較小值與最大最小值進行比較

num.max = num.max > max_temp ? num.max : max_temp;

num.min = num.min

< min_temp ? num.min : min_temp;

}return num;

}int _tmain(int argc, _tchar* argv)

; int len = sizeof(a) / 4;

num = maxandmin(a, len);

cout << num.max

<< endl;

cout << num.min

<< endl;

return

0;}

氣泡排序同時得到最大 最小值位置

專案使用過程中,要求得到一天氣溫的最大值時間。傳進來的是所有天數按時間排序bigdecimal陣列,因為每一天資料較小,採用比較簡單的氣泡排序。氣泡排序,考慮到,最大的數在與最後那個位置的數交換之前不會被交換。故最後一次與最後那個位置數交換的數便是最大數,記錄下他的位置 如果整個過程沒有出現與最後乙...

同時找最大最小值

題目定義 給定乙個大小為n的陣列,無序,找到其中的最大值和最小值,要求元素間的比較次數盡可能少。這道題出自 演算法導論 創新工場2016校招筆試也考了這道題。以下摘自 演算法導論 事實上,我們只需要最多3 n 2 次比較就可以同時找到最小值和最大值。具體的方法是記錄已知的最大值和最小值,然後對輸入元...

最大最小值演算法

inputiterator min element inputiterator beg,inputiterator end inputiterator min element inputiterator beg,inputiterator end,compfunc op inputiterator ...