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;

}