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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *