Nu aveti permisiuni pentru a descarca fisierul grader_test11.in
Diferente pentru blog/cautare-binara intre reviziile #64 si #61
Nu exista diferente intre titluri.
Diferente intre continut:
Cautarea binara este printre primii algorimi divide and conquer studiati la informatica. Algoritmul rezolva problema gasirii unui element x in un sir sortat A folosind monotonia elementelor pentru a injumatati la fiecare pas spatiul de cautare. Ideea algoritmului e simpla, insa aproape fiecare concurent olimpiada de informatica are cate o poveste cum apierdutpuncte lao problema din cauza implementarii. Majoritatea studentilor de informatica si chiar doctoranzilor, dupa cum ne spune Jon Bentley in Programming Pearls, nu reusesc sa scrie o cautare binara fara probleme.
Cautarea binara este printre primii algorimi divide and conquer studiati la informatica. Algoritmul rezolva problema gasirii unui element x in un sir sortat A folosind monotonia elementelor pentru a injumatati la fiecare pas spatiul de cautare. Ideea algoritmului e simpla, insa aproape fiecare concurent olimpiada de informatica are cate o poveste cum a bushit o problema din cauza implementarii. Majoritatea studentilor de informatica si chiar doctoranzilor, dupa cum ne spune Jon Bentley in Programming Pearls, nu reusesc sa scrie o cautare binara fara probleme.
Implementarile pot avea *multe buguri* in zone cum ar fi:
*O solutie isteata* folosita de membrii infoarena utilizeaza puterile lui 2. == code(c) |
int binary_search(int[]A, int x) {
int binary_search(int A, int x) {
int i, step, N = A.length; for (step = 1; step < N; step <<= 1); for (i = 0; step; step >>= 1)
Sa vedem cum arata codul: == code(c) |
intbinary_search(int[] A, int x) {
int search(int[] A, int x) {
int hi = A.length, lo = -1, mid;
while (hi - lo > 1) {
mid = (lo + hi) / 2;
if (A[mid] < x)
lo = mid;
low = mid;
else
hi = mid;
}
