编辑代码

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

void linearCountingSort(int array[], int size, int max, int min) {
    int range = max - min + 1;
    int count[range], i;

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

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

    int index = 0;
    for (i = 0; i < range; i++) {
        while (count[i]-- > 0) {
            array[index++] = i + min;
        }
    }
}

int main() {
    int array[] = {2, 3, 3, 4, 8, 7, 5};
    int n = sizeof(array) / sizeof(array[0]);
    int max = 8, min = 1; 

    linearCountingSort(array, n, max, min);

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