Wyszukiwanie binarne: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Dodanie literki parametru
m drobne merytoryczne
Linia 55:
Jeśli wartości kluczy na krańcach przedziału wynoszą <math>X_a</math> i <math>X_b</math> i poszukiwana wartość <math>X_a \le X \le X_b</math>, wówczas indeks można wyznaczyć jako <math>c = \lfloor a + t \cdot (b-a) \rfloor</math>, gdzie parametr <math>t</math> wynika z wartości kluczy: <math>t = \frac{X - X_a}{X_b - X_a}</math>.
 
Algorytm charakteryzuje o wiele lepsza średnia [[Asymptotyczne tempo wzrostu|złożoność obliczeniowa]] niż zwykłego wyszukiwania binarnego, wynosi bowiem <math>O\Theta(\log \log n)</math>, a nie <math>O(\log n)</math>. ZłożonośćTa złożoność jest osiągana tylko dla danych mających rozkład jednostajny, w przypadku pesymistycznym jest jednak liniowa. Jak podaje Knuth, testy empiryczne wykazują, że podejście to dobrze sprawdza się dla bardzo dużych rozmiarów tablic, dla niewielkich nie widać wyraźnej przewagi ze względu na bardziej złożone wyliczanie indeksu <math>c</math>.
 
Pomysłodawcą metody był W.W. Peterson, została użyta do wyszukiwania w posortowanych plikach; została ona opracowana ok. 1957 roku.
 
== Zobacz też ==
Linia 67:
== Bibliografia ==
* Donald Knuth, ''Sztuka programowania. Tom III: Sortowanie i wyszukiwanie'', WNT 2002
* {{Cytuj pismo | nazwisko = Peterson | imię = W. W. | tytuł = dressing for Random-Access Storage | czasopismo = IBM Journal of Research and Development | wolumin = 1 (4) | strony = 130-146 | data = 1957 }}
 
[[Kategoria:Algorytmy]]