/* ssort.c: Generic selection sort */
#include <stddef.h>
void ssort(void *array, size_t nelems, size_t size,
int (*comp)(const void *, const void *))
{
size_t i, j, n;
for (i = 0; i < nelems-1; ++i)
for (j = i+1; j < nelems; ++j)
{
char *p1 = (char *) array + i*size;
char *p2 = (char *) array + j*size;
if (comp(p1,p2) > 0)
for (n = 0; n < size; ++n)
{
/* Swap elements byte-by-byte */
char t = p1[n];
p1[n] = p2[n];
p2[n] = t;
}
}
}
/* End of File */