javaarrays

Return the two largest integers in an array of values


I am attempting to return the two largest integers from my int array. I am able to return the largest and the smallest fine, but I cannot get my algorithm to return the two largest. Any help is greatly appreciated here.

Please forgive any errors in my code. This is a practice session and the question has been taken from last years exam material at university.

Here is my code:

public class TwoLargestIntsArray {

public static void main(String [] args){

    int [] values = new int[5];

    values[0] = 5;
    values[1] = 10;
    values[2] = 15;
    values[3] = 20;
    values[4] = 25;

    System.out.println(twoLargest(values));
    System.out.println();

}

public static int twoLargest(int values[]){

    int largestA = values[0];
    int largestB = values[0];

    for(int i = 0; i < values.length; i++){

            if(values[i] > largestA){
                largestA = values[i];
            }
            if(values[i] < largestA){
                largestB = values[i];   
            }

    }
    return largestA + largestB; 
}

}

Solution

  • You can write

    public static int[] twoLargest(int values[]){
        int largestA = Integer.MIN_VALUE, largestB = Integer.MIN_VALUE;
    
        for(int value : values) {
            if(value > largestA) {
                largestB = largestA;
                largestA = value;
            // value < largestA will eliminate the possibility of any duplicates
            } else if (value > largestB && value < largestA) {
                largestB = value;
            }
        }
        return new int[] { largestA, largestB }; 
    }