时间复杂度 时间复杂度

最好:O(n)最好:O(n)

最差:O(n)最差:O(n)

平均:O(n)平均:O(n)

空间复杂度空间复杂度

非原地排序:O(1)非原地排序: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;
}