今天我的好朋友問我一道演算法題,題目是:怎樣從乙個陣列中找到第二大的元素,自己感覺很簡單的,馬上就寫完了。
int a = new int;
int max = 0; //最大的
int max2 = 0; //第二大的
if(a[0] > a[1])else
for (int i = 1; i < a.length; i++)
} system.out.println(max2);
後來他說我被他騙了,嗚嗚,還真是,也許完全可以換另外的一種思路解決的,就是先給陣列排序,然後就找出第二大的,還可以找出最大的,第三大的。。。。。後來想了想排序陣列的比較的次數貌似比我這樣的多,呵呵,是啊~
恩恩,有時候就是這樣~為了解決問題,也許有最好方法,但是這最好的方法也是有缺點的,就看你怎麼去看待了。
那句話說的好:分情況討論吧~哈哈
上面的**有問題,多謝下面的那位的找錯
**更新如下:
int a = new int;
int max = 0; //最大的
int max2 = 0; //第二大的
if(a[0] > a[1])else
for (int i = 2; i < a.length; i++) else
}} system.out.println(max2);
在陣列中找到第二大的數
在陣列中找到第二大的數 你可以假定至少有兩個數字 您在真實的面試中是否遇到過這個題?樣例 給出 1,3,2,4 返回 3.給出 1,2 返回 1.public class findtwo system.out.println secondmax nums 找出第二大的數 param nums ret...
找出乙個陣列中第二大的數
public class 找出乙個陣列中第二大的數 else if arr i max2 arr i max1 return max2 public static void main string args int a find arr system.out.println a 首先設定兩個索引ma...
怎麼找到陣列裡的第二大的數
如果僅僅是考慮實現功能,而不考慮時間效率,可以先通過排序演算法將陣列進行排序,然後根據陣列下標來索引訪問陣列中第二大的數,最快的排序演算法一般為快速排序演算法,但是其時間複雜度仍未o nlogn 根據下標訪問陣列需要遍歷一遍陣列,時間複雜度為o n 所以總的時間為o nlogn 有沒有更好的方法降低...