有人可以帮我吗?我想使用一种方法找到一个数组的最大值和第二个最大值。我已经知道如何获得最小值和第二个最小值,基本上几乎相同,但是输出仍然错误? 这就是我找到两个最小值的方法。
public static void minimum( int [] a ) {
int min;
for (int i = 0; i< a.length; i++) {
for (int j = min = i; j< a.length; j++) {
if (a[j] < a[min]) min = j;
if(min>i) {
int temp = a [i];
a [i] = a [min];
a [min] = temp;
}
}
所以,要找到最大值,我认为这是将 << / strong>从此行更改为> : 如果(a [j] << / strong> a [min])min = j; 因此,与其交换较小的值,不如交换较大的值。但这是错误的,我不明白。
谢谢!
答案 0 :(得分:0)
如果您想自己编写代码,该代码可以为您提供帮助:
public static void maxNum(int[] a) {
int length = a.length;
if (length == 0) {
System.out.println("the length of input array 0");
return;
}
if (length == 1) {
System.out.println("the max is " + a[0]);
return;
}
int max = a[0] > a[1] ? a[0] : a[1];
int secondMax = a[0] > a[1] ? a[1] : a[0];
for (int i = 2; i < length; i++) {
int value = a[i];
if (value > max) {
int tmp = max;
max = value;
secondMax = tmp;
} else if (value > secondMax) {
secondMax = value;
}
}
System.out.println("the max is " + max);
System.out.println("the second max is " + secondMax);
}
如果您不想自己编写代码,则可以使用Java Arrays.sort()
之类的工具来首先对数组进行排序并获得所需的内容。