ZealOS/src/Demo/RadixSort.CC

63 lines
695 B
HolyC
Raw Normal View History

2020-02-15 20:01:48 +00:00
#define RADIX 256
#define N 16
U8 a[N];
2020-02-16 00:26:51 +00:00
class List
2020-02-15 20:01:48 +00:00
{
2020-02-16 00:26:51 +00:00
List *next;
2020-02-15 20:01:48 +00:00
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;
2020-02-16 00:26:51 +00:00
List *tmpl;
2020-02-15 20:01:48 +00:00
"$$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;