Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- void countingSort(int* numbers, int array_size)
- {
- int max = 1;
- int min = 0;
- int k = max - min + 1;
- int* c = new int[k];
- int* b = new int[array_size];
- for (int i = 0; i < k; ++i)
- c[i] = 0;
- for (int i = 0; i < array_size; ++i)
- c[numbers[i] - min]++;
- for (int j = 1; j < k; ++j)
- c[j] = c[j] + c[j - 1];
- for (int i = array_size - 1; i >= 0; --i)
- {
- c[numbers[i] - min]--;
- b[c[numbers[i] - min]] = numbers[i];
- }
- delete[] c;
- for (int i = 0; i < array_size; i++)
- numbers[i] = b[i];
- delete[] b;
- }
- int main()
- {
- int n, x;
- std::string numbers;
- std::cin >> n;
- int* arr = new int[n];
- std::cin >> numbers;
- for (int i = 0; i < n; ++i)
- arr[i] = numbers[i] - 48;
- countingSort(arr, n);
- for (int i = 0; i < n; ++i)
- std::cout << arr[i];
- delete[] arr;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement