Print numbers in descending order along with their frequencies


Given with an array of int elements, the task is to arrange the elements in descending order and finding their occurrences.

Input : arr[]={1,1,1,2,2,2,3,3,4,5,6,7,7}
Output : 7 occurs: 2
   6 occurs: 1
   5 occurs: 1
   4 occurs: 1
   3 occurs: 2
   2 occurs: 3
   1 occurs: 3

Algorithm

START
Step 1 -> input array with elements in sorting order
Step 2 -> calculate size of an array by sizeof(a)/sizeof(a[0]
Step 3 -> store size in a variable say en
Step 4 -> Loop For i=siz-1 and i>0 and i==
   IF a[i]!=a[i-1]
      Set to=en-1
      Print a[i] and to
      Set en=i
   End
Step 5 -> print a[0] and to
STOP

Example

#include<stdio.h>
int main() {
   int a[]={1,1,1,2,2,2,3,3,4,5,6,7,7};
   int siz,i,en,st,to;
   siz=sizeof(a)/sizeof(a[0]);
   en=siz;
   for(i=siz-1;i>0;i--) {
      if(a[i]!=a[i-1]) {
         to=en-i;
         printf("%d occurs: %d
",a[i],to);          en=i;       }    }    to=en;    printf("%d occurs: %d
",a[0],to); }

Output

if we run the above program then it will generate the following output

7 occurs: 2
6 occurs: 1
5 occurs: 1
4 occurs: 1
3 occurs: 2
2 occurs: 3
1 occurs: 3

Updated on: 30-Jul-2019

390 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements