# Find Second largest element in an array using C Programming

C ProgrammingPlacements Questions

#### Cyber Security : Go from Zero to Hero

Most Popular

60 Lectures 5.5 hours

#### Master C and Embedded C Programming- Learn as you go

Best Seller

66 Lectures 5.5 hours

#### C Programming from scratch- Master C Programming

Best Seller

60 Lectures 8 hours

Given an array of integers, our task is to write a program that efficiently finds the second largest element present in the array.

Example:

Input: arr[] = {12, 35, 1, 10, 34, 1}
Output: The second largest element is 34.
Explanation: The largest element of the
array is 35 and the second
largest element is 34

Input: arr[] = {10, 5, 10}
Output: The second largest element is 5.
Explanation: The largest element of
the array is 10 and the second
largest element is 5

Input: arr[] = {10, 10, 10}
Output: The second largest does not exist.
Explanation: Largest element of the array
is 10 there is no second largest element

Approach: The idea is to sort the array in descending order and then return the second element which is not equal to the largest element from the sorted array

``````// C program to find second largest element in an array
#include <stdio.h>
#include <stdlib.h>

// Compare function for qsort

int cmpfunc(const void* a, const void* b)
{

return (*(int*)a - *(int*)b);
}

/* Function to print the second largest elements */

void print2largest(int arr[], int arr_size)
{

int i, first, second;

/* There should be atleast two elements */

if (arr_size < 2) {
printf(" Invalid Input ");
return;
}

// sort the array
qsort(arr, arr_size, sizeof(int), cmpfunc);
// start from second last element as the largest element
// is at last
for (i = arr_size - 2; i >= 0; i--) {

// if the element is not

// equal to largest element

if (arr[i] != arr[arr_size - 1]) {

printf("The second largest element is %d\n",arr[i]);

return;

}

}

printf("There is no second largest element\n");
}

/* Driver program to test above function */

int main()
{

int arr[] = { 12, 35, 1, 10, 34, 1 };

int n = sizeof(arr) / sizeof(arr);

print2largest(arr, n);

return 0;
}

``````

Output :

``````The second largest element is 34
``````

#### Complexity Analysis:

Time Complexity: O(n log n).
Time required to sort the array is O(n log n).

Auxiliary space: O(1).
As no extra space is required.