สมมติว่าตัวเลขทั้งหมดในอาร์เรย์เป็นจำนวนเต็มที่ไม่เป็นลบ และตัวเลขทั้งหมดไม่ซ้ำกัน
คัดลอกรหัสรหัสดังต่อไปนี้:
อาร์เรย์แพ็คเกจ;
คลาสสาธารณะ SecondMaxElem {
int สาธารณะ getSecondMaxElem (อาร์เรย์ int []) {
ถ้า (อาร์เรย์ == null || array.length <= 1) {
กลับ -1;
-
int สูงสุด = array[0] > array[1] ? array[0] : array[1];
int secMax = อาร์เรย์ [0] + อาร์เรย์ [1] - สูงสุด;
int len = array.length;
สำหรับ (int i = 2; i <len; i ++) {
int cur = อาร์เรย์ [i];
ถ้า (cur > secMax) {
วินาทีสูงสุด = cur;
if(secMax > max) { // สลับ
อุณหภูมิภายใน = secMax;
วินาทีสูงสุด = สูงสุด;
สูงสุด = อุณหภูมิ;
-
-
-
กลับ secMax;
-
int สาธารณะคงที่ getSecondMaxElem2 (อาร์เรย์ int []) {
ถ้า (อาร์เรย์ == null || array.length <= 1) {
กลับ -1;
-
int สูงสุด = array[0] > array[1] ? array[0] : array[1];
int secMax = อาร์เรย์ [0] + อาร์เรย์ [1] - สูงสุด;
int len = array.length;
สำหรับ (int i = 2; i <len; i ++) {
int cur = อาร์เรย์ [i];
ถ้า (cur> สูงสุด) {
วินาทีสูงสุด = สูงสุด;
สูงสุด = เส้นโค้ง;
-
อื่นถ้า (cur > secMax && cur <สูงสุด) {
วินาทีสูงสุด = cur;
-
อื่น {
// ในกรณีอื่นๆ ค่าสูงสุดและค่าสูงสุดที่สองยังคงไม่เปลี่ยนแปลง และสามารถวาดแกนพิกัดได้
-
-
กลับ secMax;
-
โมฆะคงที่สาธารณะ main (String [] args) {
int[] array = ใหม่ int[] { };
/*System.out.println("อัลกอริทึม 1: " + getSecondMaxElem(อาร์เรย์));
System.out.println("อัลกอริทึม 2: " + getSecondMaxElem2(อาร์เรย์));
array = ใหม่ int[] { 2 };
System.out.println("อัลกอริทึม 1: " + getSecondMaxElem(อาร์เรย์));
System.out.println("อัลกอริทึม 2: " + getSecondMaxElem2(อาร์เรย์));*/
array = ใหม่ int[] { 2, 3, 1, 6, 7, 5, 9 };
System.out.println("อัลกอริทึม 1: " + getSecondMaxElem(อาร์เรย์));
System.out.println("อัลกอริทึม 2: " + getSecondMaxElem2(อาร์เรย์));
/*array = int ใหม่[] { 1, 2, 3, 3, 4, 5, 5 };
System.out.println("อัลกอริทึม 1: " + getSecondMaxElem(อาร์เรย์));
System.out.println("อัลกอริทึม 2: " + getSecondMaxElem2(อาร์เรย์));*/
-
-