Pagini recente » Istoria paginii blog/f11-competition-2011 | Diferente pentru algoritmiada-2010/runda-2/solutii intre reviziile 5 si 7 | Diferente pentru utilizator/visuianmihai intre reviziile 70 si 71 | Rating CNDG Oncescu Binica Sitaru (CNDG_Oncescu_Binica_Sitaru) | Diferente pentru blog/cautare-binara intre reviziile 24 si 23
Nu exista diferente intre titluri.
Diferente intre continut:
Ideea de baza e ca vom folosi un invariant in bucla cautarii binare, adica o asertiune care e adevarata de fiecare data cand intram in bucla. Pentru cazul nostru acest invariant e ca lo indica spre un element care e mai mic ca x sau spre -1 si hi indica spre un element mai mare sau egal cu x sau in A.length. Pe scurt <tex>A[lo] < x \le A[hi] </tex> (consideram <tex>A[-1] = -\infty</tex> si <tex>A[A.length] = +\infty</tex>)
Sa vedem cum arata codul:
== code(c) |
int search(int[] A, int x) {
int hi = A.length, lo = -1, mid;
else
hi = mid;
}
if (hi == A.length || A[hi] != x)
if (hi ==== A.length || A[hi] != x)
return -1;
else
return hi;
Nu exista diferente intre securitate.
Topicul de forum nu a fost schimbat.