求最大最小值的O(3n 2)演算法

2021-08-25 17:50:52 字數 730 閱讀 3125

《演算法導論》上面第九章開章的演算法,簡單。貌似《程式設計之美》上面也有。

#include #include //time(0) #include //rand() #include using namespace std; const int max_vector_size = 10; int main() cout << "ivec num: "; for(vector::iterator iter = ivec.begin(); iter != ivec.end(); iter++) cout << endl; cout << "ivec size: " << ivec.size() << endl; /*該程式設定某組數的個數為偶數*/ int min, max; min = ivec[0] < ivec[1] ? ivec[0] : ivec[1]; max = ivec[0] < ivec[1] ? ivec[1] : ivec[0]; int mintemp, maxtemp; for(vector::size_type i = 2, j = 3; i != ivec.size() - 1; i++, j++) else /*接著進行兩次比較,分別與當前最小和最大的數進行比較*/ if(mintemp < min) min = mintemp; if(maxtemp > max) max = maxtemp; } cout << "min : " << min << endl; cout << "max : " << max << endl; return 0; }

執行結果:

最小值和最大值(3n 2)

尋找n個元素中的最大值和最小值 若n為奇數,最大值和最小值的初值設為第乙個元素的值,若n為偶數,先對前兩個元素進行比較,確定最大值和最小值 對之後輸入的元素兩兩比較然後再與最大值最小值比較,總比較次數最多為3n 2次 include using namespace std int main int ...

動態求前n個最小值 最大值

注 由於最小值和最大值的分析過程完全相同,這裡我們只討論最小值的分析流程,最大值同理 每次給定乙個數值,詢問此數值以及之前給定數值中最小的n個數 例如給定數值的順序為 8 7 1 2 9 4,設n 3 乙個最直觀的方法是,每次新增新的資料後,將當前所有資料進行排序,選擇較小的n個 一次排序最快也要 ...

輸入3個數,求最大值最小值中間值

輸入3個數,求最大值最小值中間值 2 bool 如果為真,則返回1,如果為假則返回0 3 邏輯與 要求表示式兩邊同時為真,結果才為真,如果表示式兩邊有乙個為假,結果就為假。邏輯或 一真即真 4if 第一種形式,如果條件表示式為真,會執行大括號裡的語句,執行完畢後跳出大括號執行下面的語句 如果為假,跳...