在Java中查找两个最大值

在Java中查找两个最大值,java,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

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

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;

        } 
}
公共静态无效最小值(int[]a){
int-min;
for(int i=0;ii){
int temp=a[i];
a[i]=a[min];
a[分钟]=温度;
} 
}
因此,为了找到最大值,我认为只需从这一行将更改为
如果(a[j]如果您想自己编写代码,代码可能会帮助您:

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);
}
publicstaticvoidmaxnum(int[]a){
int length=a.length;
如果(长度==0){
System.out.println(“输入数组的长度0”);
回来
}
如果(长度==1){
System.out.println(“最大值为”+a[0]);
回来
}
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最大值){
int tmp=最大值;
最大值=最大值;
secondMax=tmp;
}否则如果(值>秒最大值){
secondMax=值;
}
}
System.out.println(“最大值为”+max);
System.out.println(“第二个最大值为”+secondMax);
}

如果您不想自己编写代码,可以使用java中的工具,如
Arrays.sort()
,首先对数组进行排序并获得所需内容。

如果(min>i),您想用
做什么?如果值较小,则数组中的较小值应为最小值(min=j),因此,如果i小于min,则值应交换您的代码非常混乱。为什么要进行任何交换?为什么不从方法返回任何内容(我认为必须返回一个数组,例如,包含两个值-max和next max),或至少打印这两个值?这是一种排序算法,用于对整个数组进行排序。似乎效率很低。这意味着最小的两个值是前两个值,最大的两个值是最后两个值。将该方法重命名为
sort
,您就完成了。--但请注意,对整个列表进行排序的效率最低找到2个最小/最大值的有效方法。可能的重复看看这个-在那里你可以找到有效的方法,而无需对整个数组进行排序。