RE求掉(玄关)
查看原帖
RE求掉(玄关)
1239269
xukeyu楼主2024/8/15 20:09
#include<bits/stdc++.h>
using namespace std;
int n,a[1000001],cnt[1000001],c[1000001];
int find_max(int a[],int n){
	int maxn=-1e9;
	for(int i=1;i<=n;i++) if(a[i]>maxn) maxn=a[i];
	return maxn;
}
int find_min(int a[],int n){
	int minn=1e9;
	for(int i=1;i<=n;i++) if(a[i]<minn) minn=a[i];
	return minn;
}
void counting_sort(int a[],int n){
	int maxn=find_max(a,n),minn=find_min(a,n),k=1,num=maxn-minn+1;
	for(int i=1;i<=n;i++) cnt[a[i]-minn]++;
	for(int i=1;i<=num;i++) cnt[i]=cnt[i-1]+cnt[i];
	for(int i=n;i>=1;i--) c[cnt[a[i]-minn]]=a[i],cnt[a[i]-minn]--;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i];
	counting_sort(a,n);
	for(int i=1;i<=n;i++) cout<<c[i]<<" ";
	return 0;
}
2024/8/15 20:09
加载中...