Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. void CountingSort(int n, int* arrA, int digit)
  2. {
  3.     int k = takeDigit(arrA[0], digit);
  4.     for (int i = 1; i <= n; i++)
  5.     {
  6.         if (takeDigit(arrA[i], digit) > k)
  7.         {
  8.             k = takeDigit(arrA[i], digit);
  9.         }
  10.     }
  11.     int* arrC = new int[k + 1] {0};
  12.     int* arrB = new int[n] {0};
  13.     for (int j = 0; j < n; j++)
  14.     {
  15.         arrC[takeDigit(arrA[j], digit)] += 1;
  16.     }
  17.     for (int i = 1; i <= k; i++)
  18.     {
  19.         arrC[i] += arrC[i - 1];
  20.     }
  21.     for (int j = n - 1; j >= 0; j--)
  22.     {
  23.         arrB[arrC[takeDigit(arrA[j], digit)] - 1] = arrA[j];
  24.         arrC[takeDigit(arrA[j], digit)] = arrC[takeDigit(arrA[j], digit)] - 1;
  25.     }
  26.     for (int i = 0; i < n; i++)
  27.     {
  28.         arrA[i] = arrB[i];
  29.     }
  30.     delete[] arrC;
  31.     delete[] arrB;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement