编辑代码

#include <stdio.h>
#include <stdlib.h>

void countingSort(int array[], int size, int range) {
    int count[range + 1], i;

    for (i = 0; i <= range; ++i) {
        count[i] = 0;
    }

    for (i = 0; i < size; i++) {
        count[array[i]]++;
    }

    int index = 0;
    for (i = 0; i <= range; i++) {
        while (count[i]-- > 0) {
            array[index++] = i;
        }
    }
}
int main() {
    int array[] = {5, 4, 2, 7, 8, 6, 1};
    int n = sizeof(array) / sizeof(array[0]);
    int range = 8; 

    countingSort(array, n, range);

    printf("排序后数组: \n");
    for (int i = 0; i < n; i++) {
        printf("%d ", array[i]);
    }
    return 0;
}