演算法導論第九章例題之尋找最大數和最小數優化版

2021-06-07 22:13:22 字數 673 閱讀 6738

該演算法為尋找最大值和最小值的優化版,普通的方法需要比較3(n-2)/2次,而優化之後的演算法只需要比較2lgn-n/2次。

思路為:將陣列中元素兩兩比較,大的放到big陣列中,小的放到small陣列中,對big陣列中的數字兩兩比較,去掉小的,保留大的,直到只剩乙個元素為止。該元素即為最大值。

求最小值的思路同最大值。

具體思路見**:

//優化演算法

//第九章例題,以2lgn-n/2的比較次數同時選擇出陣列中最大值和最小值,比較次數比3(n-2)/2少

//演算法思路是每兩個元素進行比較,將所有較小的元素取出放到乙個陣列,最小的元素肯定在這裡面,

//再將這兩個陣列中每兩個元素進行比較,丟棄較大的元素,依次類推直到剩下乙個元素為止,此元素即為最小的元素

//同理,最大元素尋找的方法也是這樣

#includeusing namespace std;

void findminandmax(int a,int length,int &min,int &max)

else

}if(lengthb%2==1)

lengthb=j;

} max=big[0];

}int main()

; int min,max;

findminandmax(a,9,min,max);

cout<

演算法導論第九章例題之尋找最大數和最小數優化版

該演算法為尋找最大值和最小值的優化版,普通的方法需要比較3 n 2 2次,而優化之後的演算法只需要比較2lgn n 2次。思路為 將陣列中元素兩兩比較,大的放到big陣列中,小的放到small陣列中,對big陣列中的數字兩兩比較,去掉小的,保留大的,直到只剩乙個元素為止。該元素即為最大值。求最小值的...

演算法導論 第九章

這章介紹了中位數和順序統計學 中位數即乙個序列中最中間的數字,在快速排序中非常有意義,在其它的一些應用中也很有效,因為可以2分序列,這樣會有更好的效率。這章主要介紹如何不排序來找到序列的順序,由於不需要排序,可以減少很多比較的操作,最終可以獲得一些線性的演算法,得到排名第i的數字。演算法的基礎是首先...

第九章例題

第九章 9 1 uva1025 include include using namespace std const int inf 99999999 bool has train 440 440 2 has train t i b 表示t時刻,在車站i是否有地鐵出發 int t 440 r 440 ...