Arnab_Manna

Radix Sort

Dec 8th, 2022
713
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int getmax(int *a,int n)
  5. {
  6.     int max=a[0];
  7.     for(int i=1;i<n;i++)
  8.     {
  9.         if(a[i]>max)
  10.         {
  11.             max=a[i];
  12.         }
  13.     }
  14.     return max;
  15. }
  16.  
  17. void Sort(int *a,int size,int div)
  18. {
  19.     int output[size];
  20.     int count[10]={0};
  21.    
  22.     for (int i=0;i<size;i++)
  23.     {
  24.         count[(a[i]/div)%10]++;
  25.     }
  26.     for (int i=1;i<10;i++)
  27.     {
  28.         count[i]+=count[i-1];
  29.     }
  30.     for (int i=size-1;i>=0;i--)
  31.     {
  32.         output[count[(a[i]/div)%10]-1]=a[i];
  33.         count[(a[i]/div)%10]--;
  34.     }
  35.     for(int i=0;i<size;i++)
  36.         a[i]=output[i];
  37.    
  38. }
  39.  
  40. void radix_sort(int *a,int n)
  41. {
  42.     int m=getmax(a,n);
  43.     for (int div=1;(m/div)>0;div=div*10)
  44.     {
  45.         Sort(a,n,div);
  46.     }
  47.    
  48. }
  49.  
  50. void printarray(int *a,int n)
  51. {
  52.     int i;
  53.     for (i=0;i<n;i++)
  54.          printf("%d, ",a[i]);
  55. }
  56.  
  57. int main()
  58. {
  59.     int *a;
  60.     int n,i;
  61.     puts("enter the range");
  62.     scanf("%d",&n);
  63.     a=(int*) calloc(n,sizeof(int));
  64.    
  65.     for(i=0;i<n;i++)
  66.     {
  67.         printf("enter the data (%d):",i);
  68.         scanf("%d",&a[i]);
  69.     }
  70.     printf("original array\n");
  71.     printarray(a,n);
  72.     puts("\narray after sorting");
  73.     radix_sort(a,n);
  74.     printarray(a,n);
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment