To find the next greater element in an array
Question:
Find the next greater element for each element in the given array.
Logic:
- First, check for the element which is greater than a[i].
- If greater element found means stores into a variable m.
- If any elements greater than a[i] and less than m.
- Then reassign m with the greater element which is found.
- Otherwise, it is the largest element of the array and it has no greater elements.
- Print all the elements with their corresponding greater element.
Program:
#include<stdio.h> void main() { int a[20],i,j,n,m,l=1; clrscr(); printf("enter the length:"); scanf("%d",&n); printf("enter the elements:\n"); for(i=0;i<n;i++) { scanf("%d",&a[i]); } for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(a[i]<a[j]&&l==1) //checks for the greater element { l=0; m=a[j]; //assign greater element to m } else if(a[i]<a[j]&&a[j]<m) //checks for least greater number { m=a[j]; } } if(l!=1) //next grater element found { printf("%d->%d\n",a[i],m); } else //when no elements greater than a[i] { printf("%d->_\n",a[i]); } l=1; //acts as a marker for identifying it as greater element or not } getch(); }
Alternate way:
An alternate way is to sort all the elements in ascending or descending order then print the next element which is the next greater element.