La ricerca binaria è un efficiente — la sua stima di complessità è O(log2(n)), mentre la ricerca sequenziale convenzionale ha O(n). Ciò significa che, ad esempio, per un array di 1024 elementi, una ricerca lineare, nel caso peggiore, quando l'elemento desiderato non è nell'array, elaborerà tutti i 1024 elementi. La ricerca binaria è sufficiente per elaborare gli elementi \(log_2(1024) = 10\). Questo risultato si ottiene grazie al fatto che dopo il primo passaggio del ciclo, l'area di ricerca si restringe a 512 elementi, dopo il secondo – fino a 256 ecc.
O(log2(n))
O(n)
ciao (destra – sinistra > 1) // Finché il bordo destro è a destra di sinistra nc centrale = (sinistra + destra) /< /span> 2; // Al centro dell'area di ricerca if (A[middle] >= b) allora destra = centrale; // Sposta il bordo destro altrimenti sinistra = centrale; // Altrimenti sposta il bordo sinistro cc se (A[right] == X)allora uscita destra; altrimenti uscita -1;
A
N
X
K
NO
1000 ms 32 Mb Rules for program design and list of errors in automatic problem checking