#include <iostream>
#include <vector>
void countingSort(std::vector<int>& arr) {
int max = arr[0];
for (int i = 1; i < arr.size(); ++i) {
if (arr[i] > max) {
max = arr[i];
}
}
std::vector<int> count(max + 1, 0);
for (int i = 0; i < arr.size(); ++i) {
count[arr[i]]++;
}
int index = 0;
for (int i = 0; i <= max; ++i) {
while (count[i] > 0) {
arr[index] = i;
index++;
count[i]--;
}
}
}
int main() {
std::vector<int> arr = {4, 2, 2, 8, 3, 3, 1};
std::cout << "Original Array: ";
for (int num : arr) {
std::cout << num << " ";
}
countingSort(arr);
std::cout << "\nSorted Array: ";
for (int num : arr) {
std::cout << num << " ";
}
return 0;
}