Java 输入一个无序整型数组data[] , 查找出第二大元素以及角标。 例如:data[1,2,1,3,7,3,4,4], 输出4,7
时间: 2023-09-08 16:09:55 浏览: 105
可以使用一个变量记录最大值和次大值,以及两个变量分别记录它们的下标。遍历整个数组,如果当前元素大于最大值,则将最大值和次大值更新为当前元素和最大值,并将最大值的下标更新为当前元素的下标;如果当前元素大于次大值但小于最大值,则将次大值更新为当前元素,并将次大值的下标更新为当前元素的下标。最终,次大值和其下标就是需要的结果。
以下是一个Java的实现:
```java
public class SecondLargestElement {
public static void main(String[] args) {
int[] data = {1, 2, 1, 3, 7, 3, 4, 4};
int[] result = findSecondLargest(data);
System.out.println(result[0] + ", " + result[1]); // 输出 4, 7
}
public static int[] findSecondLargest(int[] data) {
int maxVal = Integer.MIN_VALUE;
int secondMaxVal = Integer.MIN_VALUE;
int maxIndex = -1;
int secondMaxIndex = -1;
for (int i = 0; i < data.length; i++) {
if (data[i] > maxVal) {
secondMaxVal = maxVal;
secondMaxIndex = maxIndex;
maxVal = data[i];
maxIndex = i;
} else if (data[i] > secondMaxVal && data[i] != maxVal) {
secondMaxVal = data[i];
secondMaxIndex = i;
}
}
return new int[]{secondMaxVal, secondMaxIndex};
}
}
```
使用上述代码,可以得到给定数组的第二大元素和其下标。
阅读全文