查詢乙個陣列中第二大的數的下標並輸出

2021-07-15 15:37:41 字數 950 閱讀 1980

這幾天筆試中有乙個題目,讓輸出乙個陣列中第二大的數的下標。第一想法就是排序,然後輸出第二大的陣列的下標,但是排序的話會出現交換,原數的下標也會變。所以樓主想把原陣列複製乙份儲存下來,然後對原陣列排序,找出第二大的數,與複製的陣列比較,然後輸出下標。這裡有乙個問題,如果直接寫

int a = {};

int b = a;

當陣列a中發生變化的時候,b中也會發生變化。這裡涉及到了傳值和傳址的問題。在複製陣列的時候,也叫做深複製和淺複製。經過幾次錯誤的嘗試之後,最終得到的**如下

public class findsecondmax ;

int res = findsecondmax(a);

for (int i = 0; i < a.length; i++)

system.out.println(res);

} public static int findsecondmax(int a)

system.out.println();

for (int i = 0; i < a.length; i++)

}} int x = a[a.length - 2];

system.out.println("x="+x);

//第二次輸出b陣列,和改變之前的a陣列一樣的

for (int i = 0; i < b.length; i++)

system.out.println();

for (int i = 0; i < b.length; i++)

} return result;

}}

輸出結果

1  3  8  5  6  9  2  4  

x=81  3  8  5  6  9  2  4  

1  2  3  4  5  6  8  9  2

最後乙個數字2,表示第二大的數的下標是2

找出乙個陣列中第二大的數

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...

找出陣列中第二大的數

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

找出陣列中第二大的數

include include includeusing namespace std 初始化最大值為a 0 次大值為a 1 遍歷一次,每次比較並更新最大值和次大值,最後就可以得到次大值。這種方法時間複雜度為o n bool invalidinput false int findsecondmax i...