Vai al contenuto principale

Informatica · Ricerca

Quale valore cercato dà questi confronti

Si usa la funzione

def cerca(a, x):
    lo, hi = 0, len(a) - 1
    while lo <= hi:
        mid = (lo + hi) // 2
        if a[mid] == x:
            return mid
        elif a[mid] < x:
            lo = mid + 1
        else:
            hi = mid - 1
    return -1

con

a = [3, 7, 11, 18, 22, 27, 31, 40, 44, 52, 57, 63, 70, 78, 85]

Per un certo intero x, la chiamata cerca(a, x) confronta x, nell'ordine, con 40, 18, 27 e 22, e restituisce $-1$. Quale dei seguenti può essere x?