#include using namespace std; const int MAX = 32; const int MIN = -32; const int OFFSET = -MIN; void countingSort(int* arr, int n) { int cnt[MAX + OFFSET + 1]; for (int i = 0; i <= MAX + OFFSET; i++) { cnt[i] = 0; } for (int i = 0; i < n; i++) { cnt[arr[i] + OFFSET]++; } int idx = 0; for (int i = 0; i <= MAX + OFFSET; i++) { while (cnt[i]--) { arr[idx++] = i - OFFSET; } } } void printArray(int* arr, int n) { if (n > 0) printf("%d", arr[0]); for (int i = 1; i < n; i++) { printf(" %d", arr[i]); } printf("\n"); } int main() { int n = 8; int arr[] = {3, 1, 30, 2, -7, 9, -6, 4}; countingSort(arr, n); printArray(arr, n); return 0; }