# Find Second Largest Number in Array

We can find second largest number in array using arrays , collections and sorting techniques . We will discuss how to find second largest number in array using these method with example steps by steps  .

## Java Program to Find Second Largest Number in Array

We will write a java program to find second largest element in array using simple approach as below

Approach: The approach is to traverse the array twice.   In the first traversal find the maximum element in array . In the second traversal find the greatest element in the remaining array excluding the previous greatest.

``````public class SecondLargestElementSimple {

// Function to print the second largest elements
static void print2largest(int arr[], int arr_size)
{
int i, first, second;

// There should be atleast two elements
if (arr_size < 2)
{
System.out.printf(" Invalid Input ");
return;
}

int largest = second = Integer.MIN_VALUE;

// Find the largest element
for(i = 0; i < arr_size; i++)
{
largest = Math.max(largest, arr[i]);
}

// Find the second largest element
for(i = 0; i < arr_size; i++)
{
if (arr[i] != largest)
second = Math.max(second, arr[i]);
}
if (second == Integer.MIN_VALUE)
System.out.println("There is no second " +
"largest element");
else
System.out.println("The second largest " +
"element is :"+ second);
}

public static void main(String[] args) {
int arr[] = {1,2,5,6,3,2};
int n = arr.length;
print2largest(arr, n);
}

}``````

Output :

``Second Largest is : 5``

A more Efficient Solution can be to find the second largest element in a single traversal.
Below is the complete algorithm for doing this:

``````1) Initialize the first as 0(i.e, index of arr element
2) Start traversing the array from array,
a) If the current element in array say arr[i] is greater
than first. Then update first and second as,
second = first
first = arr[i]
b) If the current element is in between first and second,
then update second to store the value of current variable as
second = arr[i]
3) Return the value stored in second.``````

Now we will implement this algorithms in java

``````
public class SecondLargestElementEfficiently {

//print second largest number
public static void print2largest(int arr[],
int arr_size)
{
int i, first, second;

/* There should be atleast two elements */
if (arr_size < 2) {
System.out.print(" Invalid Input ");
return;
}

first = second = Integer.MIN_VALUE;
for (i = 0; i < arr_size; i++) {
/* If current element is greater than
first then update both first and second */
if (arr[i] > first) {
second = first;
first = arr[i];
}

/* If arr[i] is in between first and
second then update second  */
else if (arr[i] > second && arr[i] != first)
second = arr[i];
}

if (second == Integer.MIN_VALUE)
System.out.println("There is no second " +
"largest element");
else
System.out.println("The second largest " +
"element is :"+ second);
}

public static void main(String[] args) {
int arr[] = {1,2,5,6,3,2};
//length of array
int n = arr.length;
print2largest(arr, n);
}

}``````

Output :

``The second largest element is :5``

## Find Second Largest Number in Array using Arrays

In this example we will find second largest number in array using arrays . We use arrays sort() method to sort array in acceding order then print  arr_size – 2  element .

``````import java.util.Arrays;

public class SecondLargestElementUsingArrays {

// Function to print the second largest elements
static void print2largest(int arr[], int arr_size)
{
if (arr_size < 2)
{
System.out.printf(" Invalid Input ");
return;
}

// Sort the array
Arrays.sort(arr);

System.out.println("Second Largest is : "+ arr[arr_size-2]);

}

public static void main(String[] args) {
int arr[] = {1,2,5,6,3,2};
int n = arr.length;
print2largest(arr, n);
}

}``````

Output :

``Second Largest is : 5``

## Find Second Largest Number in Array using Collections

Now we write a java program to find second largest number in array using collections

``````import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class SecondLargestElementUsingCollections {

// Function to print the second largest elements
static void print2largest(Integer arr[], int arr_size)
{
if (arr_size < 2)
{
System.out.printf(" Invalid Input ");
return;
}

List<Integer> list=Arrays.asList(arr);
Collections.sort(list);
System.out.println("Second Largest is : "+ list.get(arr_size-2));

}

public static void main(String[] args) {
Integer arr[] = {1,2,5,6,3,2};
int n = arr.length;
print2largest(arr, n);
}

}``````

Output :

``Second Largest is : 5``

In this tutorial we have learned various method for how to find second largest number in array in java . You keep learning java interview program with examples.