#include <string>
typedef unsigned int u32;
int cnt0[256],cnt8[256],cnt16[256],cnt24[256];
#define cs(a,n,d,b) \
for(int i=1;i<256;i++){\
cnt##d[i]+=cnt##d[i-1];\
}\
for(int i=n-1;i>=0;i--){\
b[--cnt##d[(a[i]>>d)&0xff]]=a[i];\
}\
memcpy(a,b,n<<2);
void sort(u32* a,int n){
if (n!=(1<<27)){
__builtin_unreachable();
}
u32 *b=new u32[n];
for(int i=0;i<n;i++){
cnt0[(a[i]>>0)&0xff]++;
cnt8[(a[i]>>8)&0xff]++;
cnt16[(a[i]>>16)&0xff]++;
cnt24[(a[i]>>24)&0xff]++;
}
cs(a,n,0,b);
cs(a,n,8,b);
cs(a,n,16,b);
cs(a,n,24,b);
}
Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |