请各位大佬们指出我的基数排序错在哪
  • 板块学术版
  • 楼主Syncc
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/4/17 20:35
  • 上次更新2024/4/17 22:37:51
查看原帖
请各位大佬们指出我的基数排序错在哪
766788
Syncc楼主2024/4/17 20:35

调了3个小时了,救救我

#include<bits/stdc++.h>
using namespace std;
int a[100050],hx[15][100005],cnt[15];
int maxn=-2e9;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		maxn=max(maxn,a[i]);
	}
	int base=1;
	while(base<=maxn){
		memset(hx,-1,sizeof(n));
		for(int i=0;i<=9;i++){
			cnt[i]=n;
		}
		for(int i=1;i<=n;i++){
			hx[a[i]/base%10][cnt[a[i]/base%10]]=a[i];//装桶
			cnt[a[i]/base%10]--;
		}
		int cou=1;
		for(int i=0;i<=9;i++){
			for(int j=n,k=cou;j>=cnt[i]+1,k<=n;j--,k++){
				if(hx[i][j]==-1) continue;
				a[k]=hx[i][j];//重新排列
				cou++;
			}
		}
		base*=10;
	}
	for(int i=1;i<=n;i++){
		cout<<a[i]<<" ";
	}
	return 0;
}

2024/4/17 20:35
加载中...