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 a pierdut puncte la 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.
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) |
int binary_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;
}
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.