方法一:(此法有局限性,适用于元素不重复的数组,如果重复可以进一步判断即可)
int[] arr = { 10, 13, 1, 17, 5, 9, 12, 7, 3, 6 };
int m1;// 最大值
int m2=arr[0];// 第二大值
int[] arr2 = arr.clone();
Arrays.sort(arr2);
m2 = arr2[arr2.length-2];
int flag=-1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == m2) {
m2 = arr[i];
flag = i;
}
}
System.out.println("次大值为:"+m2+"下标为:"+flag);
方法二:
int[] arr = { 10, 13, 1, 17, 5, 9, 12, 7, 3, 6 };
int m1;// 最大值
int m2;// 第二大值
//给前两个元素先赋最值和次最值
if (arr[0] > arr[1]) {
m1 = arr[0];
m2 = arr[1];
} else {
m1 = arr[1];
m2 = arr[0];
}
//从第三个元素开始循环比较
for (int i = 2; i < arr.length; i++) {
if (arr[i] > m1) {
m2 = m1;
m1 = arr[i];
}
if (arr[i]<m1 && arr[i]>m2) {
m2 = arr[i];
}
}
System.out.println("最大值为:"+m1+" 次大值为:"+m2);
for (int i = 0; i < arr.length; i++) {
if (arr[i] == m2) {
System.out.println("次大值的下标为:"+i);
break;
}
}