如何在Java数组中找到最高和第二最高值的位置

问题描述 投票:-3回答:2

假设我们有一个整数数组。例如perimeter = {180,50,65,78,90,5,150,2,35},我想找到最大值及其在数组中的位置以及第二值及其在数组中的位置。

public class FindTopTwo {

public static void main(String[] args) {
    double perimeter[]= {180,50,65,78,90,5,150,2,35};
    double megisto, megisto2;
    int i;
    megisto=perimeter[0];
    megisto2=perimeter[0];
    for (i=0;i<perimeter.length;i++) {
        if (perimeter[i]>megisto) {
            megisto2=megisto;
            megisto=perimeter[i];}
        else if (perimeter[i]>megisto2) {
            megisto2=perimeter[i];
        }
    }
    System.out.println("the first is:"+megisto+"the second highest value is "+megisto2);    

   }

}
java
2个回答
0
投票
只需跟踪它们的索引(i),因为它们的值会发生变化:

public static void main(String[] args) { double perimeter[]= {180,50,65,78,90,5,150,2,35}; double megisto, megisto2; megisto=perimeter[0]; int megistoIndex = 0; megisto2=perimeter[0]; int megisto2Index = 0; for (int i=0;i<perimeter.length;i++) { if (perimeter[i]>megisto) { megistoIndex = i; megisto = perimeter[i]; } else if (perimeter[i] < megisto && perimeter[i] > megisto2) { megisto2Index = i; megisto2 = perimeter[i]; } } System.out.println(String.format("the first is: %d at index %d. The second highest value is %d at index %d", megisto, megistoIndex, megisto2, megisto2Index)); }


0
投票
set highestIndex = -1; set nextHighestIndex = -1; for every element of perimiter: if highestIndex = -1: set highestIndex = i; else if perimiter[i] > perimiter[highestIndex] set nextHighestIndex = highestIndex; set highestIndex = i; else if perimiter[i] > perimieter[nextHighestIndex] set nextHighestIndex = i;
如果数组不为空,则将在允许者[highestIndex]

如果数组具有至少两个不同的值,则将在周长[nextHighestIndex]

© www.soinside.com 2019 - 2024. All rights reserved.