求助:关于基数排序
  • 板块学术版
  • 楼主anke2017
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/6/18 06:53
  • 上次更新2025/6/18 06:54:16
查看原帖
求助:关于基数排序
1076971
anke2017楼主2025/6/18 06:53

我在某道题中使用如下基数排序代码:

unsigned long long tmp[maxm];
void sort(unsigned long long *st,unsigned long long *ed,unsigned long long n,unsigned int bit)
{
	static int bu[1<<11];
	memset(bu,0,sizeof(bu));
	for(unsigned int i=0;i<n;i++)bu[(st[i]>>bit)&(0x7ff)]++;
	for(unsigned int i=1;i<(1<<11);i++)bu[i]+=bu[i-1];
	for(int i=n-1;i>=0;i--)ed[--bu[(st[i]>>bit)&0x7ff]]=st[i];
}
//sort 11 bit every time
void sort(unsigned long long *st,int n)
{
	sort(st,tmp,n,0);
	sort(tmp,st,n,11);
	sort(st,tmp,n,22);
	memcpy(tmp,st,sizeof(long long)*(n+3));
}

其原意是将 st 中的 64 位无符号整数按后 33 位大小排序。但是它炸了(死因未明)。求助一下有没有什么解决方法。

2025/6/18 06:53
加载中...