ZealOS/src/Demo/RadixSort.ZC

72 lines
715 B
HolyC
Raw Normal View History

#define RADIX 256
#define N 16
2020-02-15 20:01:48 +00:00
U8 a[N];
2020-02-16 00:26:51 +00:00
class List
2020-02-15 20:01:48 +00:00
{
List *next;
U8 *a;
} l[N], *r[RADIX];
2020-02-15 20:01:48 +00:00
U0 DumpIn()
{
I64 i;
"$$RED$$\n\nInput$$FG$$\n";
for (i = 0; i < N; i++)
"%d:%d\n", i, a[i];
2020-02-15 20:01:48 +00:00
}
U0 DumpOut()
{
I64 i, j = 0;
List *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;
}
}
2020-02-15 20:01:48 +00:00
}
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];
}
2020-02-15 20:01:48 +00:00
}
U0 Sort()
{
I64 i;
for (i = 0; i < N; i++)
{
l[i].next = r[*l[i].a];
r[*l[i].a] = &l[i];
}
2020-02-15 20:01:48 +00:00
}
U0 RadixSort()
{
Init;
DumpIn;
Sort;
DumpOut;
2020-02-15 20:01:48 +00:00
}
RadixSort;