Witam, mam znaleźć w tablicy liczbę oraz podać czas jej wyszukiwania na 2 sposoby: liniowo (szukam od 1 elementu aż do znalezienia) oraz binarnie(dziele tablice na pół i porównuję z szukaną liczba, odrzucam połowe itd.). Ogólnie chodzi o porównanie czasu przeszukiwania tablicy dla coraz większego rozmiaru. Szukanie liniowe działa mi bezproblemowo, czas rośnie proporcjonalnie do wielkości tablicy, mam jednak problem z szukaniem binarnym. Czas powinien rosnąć logarytmicznie, tymczasem u mnie np. dla mniejszej tablicy czas wynosi więcej niż dla większej tablicy. Tak wygląda funkcja szukająca:
int SzukajBinarnie(int *tab, int rozmiar, int s)
{
int l=0,pom;
int p=rozmiar-1;
fstream plik;
StartCounter();
while(true)
{
if(l>p)
{
cout<<"Wyszukiwanie binarne: nie znalazlem"<<endl;
break;
}
pom=(l+p)/2;
if(tab[pom]==s)
{
cout<<"Znalazlem binarnie, nr indeksu: "<<pom<<endl;
break;
}
else if (tab[pom]<s)
l=pom+1;
else
p=pom-1;
}
plik.open("binarnie.txt", ios::out|ios::app);
plik<<rozmiar<<"\t"<<GetCounter()<<endl;
plik.close();
return 0;
}
Gdzie mam błąd?