编辑代码

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

void findMinMax(int arr[], int len, int& min, int& max) {
    min = arr[0];
    max = arr[0];
    for (int i = 1; i < len; ++i) {
        if (arr[i] < min) {
            min = arr[i];
        }
        else if (arr[i] > max) {
            max = arr[i];
        }
    }
}

void lineCountSort (int arr[], int len, int orderedArr[]) {
    int max, min;
    findMinMax(arr, len, min, max);
    int countLen = max - min + 1;
    //需要一共统计的数组
    int *count = (int*)malloc(sizeof(int)*(countLen));

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

    //统计每个元素的个数
    for (int i = 0; i < len; i++) {
        ++count[arr[i] - min];
    }

    //统计小于等于元素的个数
    for (int i = 1; i < countLen; i++) {
        count[i] = count[i] + count[i-1];
    }

    //排序
    for (int i = len -1; i >=0; i--) {
        orderedArr[--count[arr[i] - min]] = arr[i];
    }
}


int main () {
    int arr1[] = {2,5,3,0,2,3,0,3};
    return 0;
}