求无序数组的第二小的元素
生活随笔
收集整理的這篇文章主要介紹了
求无序数组的第二小的元素
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.?比較是成對比較的,先拿前2個數比較,大的那個記作當前最大值,小的那個是第二大值。然后每次比較一隊元素,大的那個去和最大值比,如果比最大值大,就把它記為最大的,原來的最大和較小的那個比,大的記為第二大。如果大的那個沒有最大值大,那么和第二大的比,如果比它大,就更新第二大的值。這樣,每一對元素發生了3次比較,一共是1.5n次
這種方法和求最大最小元素類似
2.?http://www.cnblogs.com/phishine/articles/1205351.html
?其方法叫做?tournament method,?算法實現如下:?
??? 對數組a[1…n]?中元素成對的做比較,每次比較后講較小的數拿出,形成的數組再繼續這樣處理,直到剩下最后的一個,就是數組中最小的那個。將這個過程以一個樹的形式表現出來,如下圖:?
????
在這個過程中,非樹葉節點就是比較的次數,一共進行了n-1?次比較,樹根即為最小的元素。而第二小的元素一定是在這個過程中與根節點進行過比較的元素。即上圖中5,3和2。這樣的節點最多有個,在這些節點中找到最小的元素需要進行-1次比較。因此總共所需的比較次數為?n-1 +?-1?= n+-2?次
總結
以上是生活随笔為你收集整理的求无序数组的第二小的元素的全部內容,希望文章能夠幫你解決所遇到的問題。