'Primer 12e: binarna pretraga (sortiranog) niza
'u sortiranom nizu dimenzije n trazimo element x
'vrednost funkcije je True akko je element x pronadjen u nizu
Function binarnaPretraga(niz() As Integer, ByVal n As Integer, x As Integer) As Boolean
    Dim poc As Integer
    Dim kraj As Integer
    Dim indeks As Integer
    Dim nadjen As Boolean
    
    nadjen = False
    poc = 1
    kraj = n
    While (poc <= kraj) And (Not nadjen)
        indeks = (poc + kraj) \ 2 'Celobrojno deljenje
        If niz(indeks) = x Then
            nadjen = True
        ElseIf niz(indeks) < x Then
            poc = indeks + 1
        Else 'niz(indeks) > x
            kraj = indeks - 1
        End If
    Wend
    binarnaPretraga = nadjen
End Function

Function binPretragaRekurzivno(niz() As Integer, vrednost As Integer, donjaGranica As Integer, gornjaGranica As Integer) As Integer
  Dim srednji As Integer
  If gornjaGranica < donjaGranica Then
    binPretragaRekurzivno = -1 'nije pronadjen
  Else
    ' donjaGranica + ((gornjaGranica - donjaGranica) \ 2)
    srednji = (donjaGranica + gornjaGranica) \ 2
    If niz(srednji) > vrednost Then
      binPretragaRekurzivno = binPretragaRekurzivno(niz, vrednost, donjaGranica, srednji - 1)
    ElseIf niz(srednji) < vrednost Then
      binPretragaRekurzivno = binPretragaRekurzivno(niz, vrednost, srednji + 1, gornjaGranica)
    Else
      binPretragaRekurzivno = srednji 'pronadjen
    End If
  End If
End Function