在Java中,要求一個整數數組中的最大值和次大值是很常見的問題。我們可以使用以下代碼來解決這個問題:
int[] arr = {1, 5, 3, 8, 2, 6, 9}; int max = Integer.MIN_VALUE; int secondMax = Integer.MIN_VALUE; for (int i = 0; i< arr.length; i++) { if (arr[i] >max) { secondMax = max; max = arr[i]; } else if (arr[i] >secondMax && arr[i] != max) { secondMax = arr[i]; } } System.out.println("最大值: " + max); System.out.println("次大值: " + secondMax);
在上面的代碼中,我們使用了一個for循環來遍歷整個數組,并使用兩個變量max和secondMax來存儲最大值和次大值。
我們首先將max和secondMax的初始值分別設為Integer.MIN_VALUE。然后,我們遍歷數組中的所有元素,如果當前元素大于max,則將max的值更新為當前元素的值,并將secondMax的值更新為max的舊值。如果當前元素大于secondMax且不等于max,那么我們將secondMax的值更新為當前元素的值。
最后,我們使用System.out.println()輸出最大值和次大值。運行上面的代碼,輸出結果為:
最大值: 9 次大值: 8
這個算法的時間復雜度為O(n),其中n是數組的長度。因為我們只需要遍歷一次整個數組來找到最大值和次大值。