Pagini recente » Arhiva de probleme | preONI 2007, Runda 1, Clasele 11-12 | Diferente pentru utilizator/robybrasov intre reviziile 59 si 78 | Diferente pentru problema/ultimulcartus intre reviziile 33 si 32 | Diferente pentru blog/cautare-binara intre reviziile 35 si 34
Nu exista diferente intre titluri.
Diferente intre continut:
* linia 2: setam pe hi si lo inafara sirului, astfel invariantul e indeplinit si nu trebuie sa tratam cazuri speciale.
* linia 3: conditia de continuare a buclei e hi - lo > 1. Invariantul ales face ca hi si lo sa fie tot timpul distincte. La fiecare pas distanta intre hi si lo se injumatateste, iar cand hi si lo ajung consecutive ca pozitii in sir putem lua o decizie.
* linia 4: mid va fi tot timpul intre lo si hi.
* linia 6: stim ca A[mid] < x si astfel facand atribuirea lo = mid micsoram spatiu de cautare si pastra invariantul
* la linia 8 stim ca A[mid] >= x si putem face atribuirea hi = mid.
* la linia 10 vedem daca x e in sir
* linia x: stim ca A[mid] < x si astfel facand atribuirea lo = mid micsoram spatiu de cautare si pastra invariantul
* la linia y stim ca A[mid] >= x si putem face atribuirea hi = mid.
* la linia z vedem daca x e in sir
** in caz afirmativ putem sa returnam indexul hi
** un caz negativ e cand ultimul element din sir e mai mic decat x. Atunci avem lo = A.length - 1 si hi = A.length
** celalalt caz negativ e ca hi sa fie undeva in interiorul sirului si sa avem ca A[lo] < x < A[hi]
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.