Zakładamy że obowiązują deklaracje:
int a[N];
int i, j, k, x;
Zakładamy również że elementy tablcy `a' są uporządkowane rosnąco. Procedura wyszukiwania binarnego ma się zatrzymać z `a[k]==x' jeśli takie `k' istnieje i z `a[k]!=x' w przeciwnym przypadku. Które z poniższych fragmentów są poprawne, jak można poprawić pozostałe, które są bardziej wydajne?
i = 0;
j = N-1;
do {
k = (i+j)/2;
if (a[k]<x) {
i = k;
} else {
j = k;
}
} while (a[k]!=x && i<j);
i = 0;
j = N-1;
do {
k = (i+j)/2;
if (x<a[k]) {
j = k;
} else {
i = k+1;
}
} while (i<j);
i = 0;
j = N-1;
do {
k = (i+j)/2;
if (x<=a[k]) {
j = k-1;
}
if (a[k]<=x) {
i = k+1;
}
} while (i<=j);
i = 0;
j = N-1;
k = (i+j)/2;
while(<j) {
if (a[k]==x) {
break;
}
if (a[k]<x) {
i = k+1;
} else {
j = k-1;
}
}