#include <iostream>
using namespace std;
void CountSort(int* arr, int size) {
int max = arr[0];
int min = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max)
max = arr[i];
if (arr[i] < min)
min = arr[i];
}
int range = max - min + 1;
int* count = new int[range];
for (int i = 0; i < range; i++)
count[i] = 0;
for (int i = 0; i < size; i++)
count[arr[i] - min]++;
int index = 0;
for (int i = 0; i < range; i++) {
while (count[i] > 0) {
arr[index] = i + min;
index++;
count[i]--;
}
}
delete[] count;
}
int main() {
int arr[] = {5, 3, 7, 2, 9, 1, 4, 6, 8};
int size = sizeof(arr) / sizeof(arr[0]);
cout << "原数组:" << endl;
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
cout << endl;
CountSort(arr, size);
cout << "排序后的数组:" << endl;
for (int i = 0; i < size; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}