Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void CountingSort(int n, int* arrA, int digit)
- {
- int k = takeDigit(arrA[0], digit);
- for (int i = 1; i <= n; i++)
- {
- if (takeDigit(arrA[i], digit) > k)
- {
- k = takeDigit(arrA[i], digit);
- }
- }
- int* arrC = new int[k + 1] {0};
- int* arrB = new int[n] {0};
- for (int j = 0; j < n; j++)
- {
- arrC[takeDigit(arrA[j], digit)] += 1;
- }
- for (int i = 1; i <= k; i++)
- {
- arrC[i] += arrC[i - 1];
- }
- for (int j = n - 1; j >= 0; j--)
- {
- arrB[arrC[takeDigit(arrA[j], digit)] - 1] = arrA[j];
- arrC[takeDigit(arrA[j], digit)] = arrC[takeDigit(arrA[j], digit)] - 1;
- }
- for (int i = 0; i < n; i++)
- {
- arrA[i] = arrB[i];
- }
- delete[] arrC;
- delete[] arrB;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement