C Program to find Second Largest element in the array

Description

Get array size n and n elements of array, then find the second largest element among those elements.
Input:
5
5 7 9 3 1
Output:
7

Solution

#include<stdio.h>
#include<stdlib.h>
#include<limits.h>
int main()
{
	int *a,n,i,max,second_max;
	printf("Enter size of array:");
	scanf("%d",&n);

	a=malloc(sizeof(int)*n);

	printf("Enter %d Elements:",n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	
	max=INT_MIN;
	second_max=INT_MIN;
	for(i=0;i<n;i++)
	{
		if(a[i]>max)
		{
			second_max=max;
			max=a[i];
		}
		else if(a[i] > second_max && a[i]!=max)
		{
			second_max=a[i];
		}
	}

	printf("%d",second_max);
	return 0;	
}

Explanation

Initialize max and second_max with INT_MIN(INT_MIN is constant holds minimum integer value)

 visit every node in the array
   a) If the current element in array a[i] is greater than max. Then update max and second_max as,
      second_max = max
      max = arr[i]
   b) If the current element is lesser than max and greater than second_max,
      then update second_max to store the value of current variable as
      second_max = arr[i]
print the value stored in second_max.