[ lord_NIKON @ 26.12.2005. 18:34 ] @
Code: int binsearch(int x, int v[], int n) { int low, high, mid; low = 0; high = n - 1; while(low <= high) { mid = (low + high)/2; if(x < v[mid]) high = mid + 1; // <-- zasto se dodaje +1 if(x > v[mid]) low = mid + 1; else return mid; } return -1; } Naime, kod kod ove funkcije mi je jasan. Algoritam trazi vrednost x u nizu v, dok n predstavlja broj elemenata niza. Ono sto mi nije jasno je sledece, zasto se posle uporedjivanja vrednosti x sa nekom vrednosti iz niza v , high postavlja na mid +1. Ja sam kontao, zato sto imamo deljenje int brojeva pri odredjivanju vrednosti mid. Posto bi kod takvog deljenja svaki ostatak nestao, dodajemo jedinicu da bi povecali vrednost ukoliko je doslo do gubljenja vrednosti. Ispravite me ako nisam u pravu [Ovu poruku je menjao lord_NIKON dana 26.12.2005. u 19:35 GMT+1] |