时间复杂度
最好:O(n)
最差:O(n)
平均:O(n)
空间复杂度
非原地排序:O(1)
算法稳定性:稳定
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
constexpr int N=1e5+7;
int n,a[N];
void Sort(){
int maxx=0,pre[N]={},ans[N]={};
for(int i=1;i<=n;i++){
maxx=max(maxx,a[i]);
pre[a[i]]++;
}
for(int i=1;i<=maxx;i++) pre[i]+=pre[i-1];
for(int i=n;i>=1;i--){
ans[pre[a[i]]--]=a[i];
}
for(int i=1;i<=n;i++){
a[i]=ans[i];
}
}
signed main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
Sort();
for(int i=1;i<=n;i++){
printf("%d ",a[i]);
}
return 0;
}