简介 #
计数排序是一种空间换时间的排序算法。通常用作 基数排序的子过程。
参考文献 #
算法实现 #
#include <iostream>
using namespace std;
const int MAXN = 100000;
const int k = 1000;
int a[MAXN], c[MAXN], ranked[MAXN];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; ++i)
{
cin >> a[i];
++c[a[i]];
}
for (int i = 1; i < k; ++i)
c[i] += c[i - 1];
for (int i = n - 1; i >= 0; --i)
ranked[--c[a[i]]] = a[i];
for (int i = 0; i < n; ++i)
cout << ranked[i] << ' ';
return 0;
}
算法分析 #
-
时间复杂度 \( O(n + k) \)
-
空间复杂度 \( O(n + k) \)