|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T b
Length: 1075 (0x433)
Types: TextFile
Names: »bytesort.c«
└─⟦db229ac7e⟧ Bits:30007240 EUUGD20: SSBA 1.2 / AFW Benchmarks
└─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21E/utah/bytesort.c«
└─⟦this⟧ »EUUGD20/AFUU-ssba1.21/ssba1.21F/utah/bytesort.c«
#define REG register
#define MAXNUM 1000
#define COUNT 10
#define MODULUS ((long) 0x20000)
#define C 13849L
#define A 25173L
long seed = 7L;
long random();
long buffer[MAXNUM] = {0};
main()
{
REG int i, j;
long temp;
printf("Filling array and sorting %d times\n", COUNT);
for (i = 0; i < COUNT; ++i)
{
for (j = 0; j < MAXNUM; ++j)
{
temp = random(MODULUS);
if (temp < 0L)
temp = -temp;
buffer[j] = temp;
}
printf("Buffer full, iteration %d\n", i);
quick(0, MAXNUM, buffer);
}
printf("Done\n");
exit(0);
}
quick(lo, hi, base)
int lo, hi;
long base[];
{
REG int i, j;
long pivot, temp;
if (lo < hi)
{
for (i = lo, j = hi, pivot = base[hi]; i < j; )
{
while (i < j && base[i] < pivot)
++i;
while (j > i && base[j] > pivot)
--j;
if (i < j)
{
temp = base[i];
base[i] = base[j];
base[j] = temp;
}
}
temp = base[i];
base[i] = base[hi];
base[hi] = temp;
quick(lo, i - 1, base);
quick(i + 1, hi, base);
}
}
long random(size)
long size;
{
seed = seed * A + C;
return (seed % size);
}