Przeszukiwanie binarne przeznaczone jest do wyszukiwania elementów w uporządkowanych danych wejściowych.
Ideą przeszukiwania jest sprawdzanie w każdej iteracji elementu środkowego, czy jest elementem poszukiwanym. Jeżeli tak wyszukiwanie jest przerywane.
W przeciwnym razie następuje warunek sprawdzenia czy wyznaczony (środkowy element) jest elementem większym od poszukiwanego, jeżeli tak następuje dalsze sprawdzanie w lewej części danych wejściowych. W przeciwnym wypadku w prawej części.
int BinarySearch(int* pArray, int nSize, int nValue)
{
if (!pArray || !nSize)
return -1;
int nLeft = 0, nRight = nSize - 1, nMid;
while (nLeft <= nRight)
{
// Wyznaczamy srodkowy element
nMid = (nLeft + nRight) / 2;
if (pArray[nMid] == nValue)
return nMid;
// Sprawdzamy, czy szukany element znajduje sie w:
// prawej czy lewej czesci?
if (pArray[nMid] < nValue)
{
// Zawezamy pole wyszukiwania do prawej czesci
nLeft = nMid + 1;
}
else
{
// Zawezamy pole wyszukiwania do lewej czesci
nRight = nMid - 1;
}
}
// Nie znaleziono szukanego elementu
return -1;
}
0 Komentarzy