63 lines
692 B
HolyC
Executable File
63 lines
692 B
HolyC
Executable File
#define RADIX 256
|
|
#define N 16
|
|
|
|
U8 a[N];
|
|
|
|
class Lst
|
|
{
|
|
Lst *next;
|
|
U8 *a;
|
|
} l[N],*r[RADIX];
|
|
|
|
U0 DumpIn()
|
|
{
|
|
I64 i;
|
|
"$$RED$$\n\nInput$$FG$$\n";
|
|
for (i=0;i<N;i++)
|
|
"%d:%d\n",i,a[i];
|
|
}
|
|
|
|
U0 DumpOut()
|
|
{
|
|
I64 i,j=0;
|
|
Lst *tmpl;
|
|
"$$RED$$\n\nOutput$$FG$$\n";
|
|
for (i=0;i<RADIX;i++) {
|
|
tmpl=r[i];
|
|
while (tmpl) {
|
|
"%d:%d\n",j++,*tmpl->a;
|
|
tmpl=tmpl->next;
|
|
}
|
|
}
|
|
}
|
|
|
|
U0 Init()
|
|
{
|
|
I64 i;
|
|
MemSet(r,0,sizeof(r));
|
|
for (i=0;i<N;i++) {
|
|
a[i]=RandU16&255;
|
|
l[i].next=NULL;
|
|
l[i].a=&a[i];
|
|
}
|
|
}
|
|
|
|
U0 Sort()
|
|
{
|
|
I64 i;
|
|
for (i=0;i<N;i++) {
|
|
l[i].next=r[*l[i].a];
|
|
r[*l[i].a]=&l[i];
|
|
}
|
|
}
|
|
|
|
U0 RadixSort()
|
|
{
|
|
Init;
|
|
DumpIn;
|
|
Sort;
|
|
DumpOut;
|
|
}
|
|
|
|
RadixSort;
|