We assume that a[0] has first biggest and a[1] has the second biggest value.
Now check if this assumption is correct, if not, swap the values.
if( sbig > fbig )
{
temp = sbig;
sbig = fbig;
fbig = temp;
}
Now since we have already checked with a[0] and a[1], we start the comparison from a[2], till N.
for(i=2; i < n ; i++)
if(a[i] > fbig)
{
sbig = fbig;
fbig = a[i];
}
else if(a[i] > sbig)
sbig = a[i];
Now, if a[i] contains a number which is bigger than fbig, we transfer the value of a[i] to fbig and the value present in fbig to sbig;
If the value of a[i] is not bigger than fbig, then we check it with sbig. If a[i] is bigger than sbig, then we assign the value of a[i] to sbig.
This way, at the end of the loop fbig will have the first biggest and sbig will have the second biggest element/number in the array.
Video Tutorial: Find First and Second Biggest In An Array, Without Sorting It: C
Full source code
#include < stdio.h >
#include < conio.h >
void main()
{
int a[20], N, i, fbig, sbig, temp;
clrscr();
printf("Enter array limit\n");
scanf("%d", &N);
printf("Enter %d array elements\n", N);
for(i=0; i < n ; i++)
scanf("%d", &a[i]);
fbig = a[0];
sbig = a[1];
if( sbig > fbig )
{
temp = sbig;
sbig = fbig;
fbig = temp;
}
for(i=2; i < n ; i++)
if(a[i] > fbig)
{
sbig = fbig;
fbig = a[i];
}
else if(a[i] > sbig)
sbig = a[i];
printf("First Big is %d and Second big is %d", fbig, sbig);
getch();
}
Output:
Enter array limit
6
Enter 6 array elements
99
108
777
723
786
999
First Big is 999 and Second big is 786