计数排序

#include <stdio.h>

void counting_sort(const int arr[], int size, int target[], int k) {
    int count[k + 1];
    for (int i = 0; i <= k; ++i) {
        count[i] = 0;
    }
    for (int i = 0; i < size; ++i) {
        count[arr[i]]++;
    }
    for (int i = 1; i <= k; ++i) {
        count[i] += count[i - 1];
    }
    for (int i = size - 1; i >= 0; --i) {
        target[count[arr[i]] - 1] = arr[i];
        count[arr[i]]--;
    }
}

int main() {
    int arr[] = {3, 2, 9, 4, 1}, size = sizeof(arr) / sizeof(int), target[size], k = 9;
    counting_sort(arr, size, target, k);
    for (int i = 0; i < size; ++i) {
        printf("%d\n", target[i]);
    }
    return 0;
}

 

posted @ 2022-07-03 00:41  张时雨  阅读(24)  评论(0)    收藏  举报