Admin Production ni-theme
Current Publication

BinSearch

LabWindows/CVI

BinSearch

ssize_t BinSearch (const void *arrayToSearch, size_t numberOfElements, size_t elementSize, const void *itemPointer, CompareFunction comparisonFunction);

Purpose

Performs a binary search in an array of numberOfElements items of size elementSize.

Important: The binary search algorithm assumes that the array is already sorted in ascending order.

This function is like the C Library bsearch function except that this function returns the index where the item should be placed if it is not found.

Parameters

Input
Name Type Description
arrayToSearch const void * Pass the array of items that BinSearch will search.

Important: The binary search algorithm assumes that the array is already sorted in ascending order.
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.
itemPointer const void * Pass a pointer to the item to search for in the array.
comparisonFunction CompareFunction Pass a comparison function that BinSearch should use to compare items in the array to the item pointed to by itemPointer.

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. When the comparison function is called, item1 is always the item pointer passed to BinSearch and item2 is always a pointer to an element in the array passed to BinSearch.

This instrument driver provides several commonly useful comparison functions:

ShortCompare
IntCompare
FloatCompare
DoubleCompare
CStringCompare
CStringNoCaseCompare

Return Value

Name Type Description
result ssize_t Returns the index of the array element that matches the item (from 0 to numberOfElements – 1).

If no match is found, it returns where the item should be placed if it were to be inserted in order, –i – 1 where i is the index (0 to numElements).

Additional Information

Library: Programmer's Toolbox

Include file: toolbox\toolbox.h

LabWindows/CVI compatibility: LabWindows/CVI 4.0 and later