Sunteți pe pagina 1din 1

#include <iostream>

using namespace std;

int main()
{
// algoritmul de cautare binara functioeaza doar pe array-uri sortate
int sortedArray[40]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
int li=0; // se initializeaza cu indexul primului element din array
int ls = ((sizeof(sortedArray)/sizeof(sortedArray[0]))-1); // se initializeaza cu index-ul ultimului element din array
int middle=(li+ls)/2; // mijlocul array-ului
int key = 1; // elementul pe care il cautam, cheia
while(sortedArray[middle]!=key){ // cautam prin elemente pana gasim cheia
if(sortedArray[middle]<key){ // daca elementul din mijloc este mai mic decat cheia atunci deducem ca elementul e in jumatatea din dreapta
li=middle+1; // cheia fiind mai mare setam limita inferioara dupa elementul din mijloc, pentru ca pe acesta l-am verificat
cout<<"Am verificat indexul: " << middle << " si are elementul: "<<sortedArray[middle]<<endl;
}
if(sortedArray[middle]>key){ // aceias chestie dar invers, daca elementul din mijloc e mai mare atunci cheia trebuie sa fie mai mica
ls=middle-1; // deci setam limita superioara la stanga elementului din mijloc pentru ca pe acesta l-am verificat
cout<<"Am verificat indexul: " << middle << " si are elementul: "<<sortedArray[middle]<<endl;
}
middle=(li+ls)/2; // dupa fiecare decizie impartim array-ul in jumatate
}

cout<<"Am gasit cheia la indexul: " << middle << " continand elementul: " << sortedArray[middle]<<endl;

return 0;
}

S-ar putea să vă placă și