*Še nekaj redov zahtevnosti

Ta postopek si pomaga z dejstvom, da je tabela urejena. V mislih jo razdelimo pri srednjem elementu (recimo a[m]) na dve polovici. Če je x manjši od a[m], je tudi manjši od vseh elementov v desni polovici tabele (kajti oni so še večji od a[m]), torej ga moramo v nadaljevanju iskati le v levi polovici tabele. Podobno pa, če je x večji od a[m], je večji tudi od vseh elementov v levi polovici tabele, zato ga moramo iskati naprej v desni polovici. Tako z vsakim takim korakom (vsako iteracijo zanke while) razpolovimo območje, ki ga moramo še preiskati. (Mimogrede, temu postopku s tujko rečemo bisekcija, kar dobesedno pravzaprav pomeni ravno razdeljevanje na dva kosa.)

Če bi namesto s tabelo dolžine n začeli z dvakrat tolikšno tabelo, ne bi potrebovali dvakrat več časa kot pri n, ampak le eno iteracijo več. Takšna časovna zahtevnost torej narašča veliko počasneje od linearne. V splošnem za tabelo dolžine n = 2c potrebujemo le c iteracij. V matematiki takemu c, za katerega velja 2c = n, pravijo »(dvojiški) logaritem« števila n, zato pravimo, da ima naša funkcija Poisci logaritemsko časovno zahtevnost.

Vaja


Izvedi Počisti