Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.84 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void countingSort(int* tab, int n, int k) {
  5.     int *counters = malloc(k*sizeof(int));
  6.     int* result = malloc(n*sizeof(int*));
  7.    
  8.     for(int i=0; i<k; i++) counters[i] = 0;
  9.     for(int i=0; i<n; i++) counters[tab[i]] ++;
  10.     for(int i=1; i<k; i++) counters[i]+=counters[i-1];
  11.     for(int i=n-1; i>=0; i--)
  12.     {
  13.         result [--counters [ tab[i]]] = tab[i];
  14.        
  15.     }
  16.     for(int i=0; i<n; i++) tab[i] = result[i];
  17. }
  18.  
  19. int main() {
  20.     int Z;
  21.     scanf("%d", &Z);
  22.  
  23.     while (Z--) {
  24.  
  25.         int n, k;
  26.         scanf("%d", &n);
  27.         scanf("%d", &k);
  28.         int *tab = malloc(n*sizeof(int*));
  29.         for(int i=0; i<n; i++) {
  30.             scanf("%d", &tab[i]);
  31.         }
  32.  
  33.         countingSort(tab, n, k);
  34.         for(int i=0; i<n; i++) {
  35.             printf("%d\n", tab[i]);
  36.         }
  37.         free(tab);
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement