Print numbers in descending order along with their frequencies

CServer Side ProgrammingProgramming

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\n",a[i],to);
         en=i;
      }
   }
   to=en;
   printf("%d occurs: %d\n",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
raja
Published on 29-Jul-2019 17:07:34
Advertisements