HeapSort
void HeapSort (void *arrayToSort, size_t numberOfElements, size_t elementSize, CompareFunction comparisonFunction);
Purpose
Sorts an array of elements in ascending order according to a comparison function provided by the user.
This function is similar to the C library qsort function except that its performance is guaranteed to be proportional to n*log n where n is the number of items to be sorted.
The qsort function uses the quicksort algorithm with median of 3 partitioning. The performance of this algorithm is n*log n for almost all initial orderings, including the case where the array is already sorted. However, there are a very few orderings for which the performance of quicksort degenerates towards being proportional to n*n.
In practice, you will almost never encounter one of these orderings. This makes the C library qsort function a better choice since it is about three times faster than HeapSort.
Only use HeapSort if sorting performance proportional to n*log n must be absolutely guaranteed.
Parameters
Input | ||
Name | Type | Description |
arrayToSort | void * | The array of items that HeapSort will sort. |
numberOfElements | size_t | Pass the number of items in the array. |
elementSize | size_t | Pass the item size (in bytes) for the items in the array. |
comparisonFunction | CompareFunction | Pass a comparison function that HeapSort should use to compare the items in the array. The comparison function should have the following prototype: int CVICALLBACK CompareFunction(void *item1, void *item2); The comparison function should return a negative number if item1 is less than item2, it should return 0 if item1 is equal to item2, and it should return a positive number if item1 is greater than item2. This instrument driver provides several commonly useful comparison functions: ShortCompare IntCompare FloatCompare DoubleCompare CStringCompare CStringNoCaseCompare |
Return Value
None.
Additional Information
Library: Programmer's Toolbox
Include file: toolbox\toolbox.h
LabWindows/CVI compatibility: LabWindows/CVI 4.0 and later