怎麼找到陣列裡的第二大的數

2021-08-21 17:21:06 字數 655 閱讀 7080

如果僅僅是考慮實現功能,而不考慮時間效率,可以先通過排序演算法將陣列進行排序,然後根據陣列下標來索引訪問陣列中第二大的數,最快的排序演算法一般為快速排序演算法,但是其時間複雜度仍未o(nlogn),根據下標訪問陣列需要遍歷一遍陣列,時間複雜度為o(n),所以總的時間為o(nlogn)。

有沒有更好的方法降低時間複雜度呢?答案當然是有的。可以只通過一遍掃瞄陣列即可找到第二大數,即通過設定兩個變數來進行判斷。

先定義兩個變數:乙個變數用來儲存陣列的最大數,初始值為陣列首元素,另乙個變數用來儲存第二大的數,初始值為最小負整數,然後遍歷陣列元素,如果陣列元素的值比最大數變數還大,更新最大數;若陣列元素的值比最大值還小,則與第二大的數比較,若該數比第二大數大,則更新第二大的數;

public static int secondmax(int nums) 

else if(i< first_max && i> second_max)

}return second_max;

} public static void main(string args);

int secondmax=secondmax(a);

system.out.println(secondmax);

}

輸出第二大的數字為5,效能和空間價效比都比較高。

在陣列中找到第二大的數

在陣列中找到第二大的數 你可以假定至少有兩個數字 您在真實的面試中是否遇到過這個題?樣例 給出 1,3,2,4 返回 3.給出 1,2 返回 1.public class findtwo system.out.println secondmax nums 找出第二大的數 param nums ret...

第二大的數

這是微軟的一道面試題,是我找工作時看的面試寶典裡面的一題,覺得很有意思,這種處理的方法應該可以用在很多地方。下面就來進入正題吧。題目 寫乙個函式,找出乙個整數陣列中,第二大的數。時間複雜度o n const int minnumber 32767 int ctestsizeofdlg find se...

找出陣列中第二大的數

給你乙個陣列,求出其中第二大的數 比如陣列a 1,2,3,4,5,6,7,8,9 其中第二大的數為8,返回8即可 分析 一般情況下都是求最大值,呵呵,這道題很有趣。想想也不難,可以在掃瞄最大值的同時,求出第二大的值,就是比當前最大值大的數賦給最大值,然後用第二大的值與先前的最大值比較,如果小,則用先...