hsort(3) - generic heap sort
#include <slack/std.h> #include <slack/hsort.h>
typedef int hsort_cmp_t(const void *, const void *);
void hsort(void *base, size_t n, size_t size, hsort_cmp_t *cmp);
hsort(3) is an implementation of the heap sort algorithm. It sorts a
table of data in place. base
points to the element at the base of the
table. n
is the number of elements in the table. size
is the size of
the elements in bytes. cmp
is the comparison function, which is called
with two arguments that point to the elements being compared. As the
function must return an integer less than, equal to, or greater than zero,
so must the first argument to be considered be less than, equal to, or
greater than the second.
The comparison function need not compare every byte, so arbitrary data may be contained in the elements in addition to the values being compared.
The order in the output of two items which compare as equal is unpredictable.
MT-Safe
Note that the array being sorted will still have to be write locked during hsort(3) if it is accessed by other threads.
qsort(3)
Stephen Russell, Department of Computer Science, University of Sydney, 2006. Australia 1988 April 28