在Java中找到两个最大值

时间:2019-01-17 23:37:23

标签: java

有人可以帮我吗?我想使用一种方法找到一个数组的最大值和第二个最大值。我已经知道如何获得最小值和第二个最小值,基本上几乎相同,但是输出仍然错误? 这就是我找到两个最小值的方法。

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; 因此,与其交换较小的值,不如交换较大的值。但这是错误的,我不明白。

谢谢!

1 个答案:

答案 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()之类的工具来首先对数组进行排序并获得所需的内容。