ALG1
7.2. Przeszukiwanie binarne 191
Znalazlem=TAK;
if(tab[mić]<x)
loft-mid+1;
else
right=mid-l ;
)
if(Znalazlem==TAK) return mi ti; else return -1;
)
Nazwy i znaczenie zmiennych są dokładnie takie same. jak we wspomnianym zadaniu, dlatego warto tam zerknąć choć raz dla porównania. Pewnej dyskusji wymaga problem wyboru elementu „środkowego” (muf). W naszych przykładach jest to dosłownie środek aktualnie rozpatrywanego obszaru poszukiwań. W rzeczywistości jednak może nim być oczywiście dowolny indeks pomiędzy lej) i righl! Nietrudno jednak zauważyć, że „przepoławianie" tablicy zapewnia nam eliminację największego możliwego obszaru poszukiwań. Ich niepowodzenie jest sygnalizowane przez zwrot wartości -/. W przypadku sukcesu zwracany jest „tradycyjnie” indeks elementu w tablicy.
Przeszukiwanie binarne jest algorytmem klasy Ollog 2 N) (patrz Rozkład ..logarytmiczny”). Dla dokładnego uświadomienia sobie jego zalet weźmy pod uwagę konkretny przykład numeryczny:
Przeszukiwanie liniowe pozwala w czasie proporcjonalnym do rozmiaru tablicy (listy) odpowiedzieć na pytanie, czy element x się w niej znajduje. Zatem dla tablicy o rozmiarze 20,000 należałoby w najgorszym przypadku wykonać 20,000 porównań, aby odpowiedzieć na postawione pytanie. Analogiczny wynik dla przeszukiwania binarnego wynosi log 2 20000 (ok. 14 porównań)._
Nic tak dobrze nic przemawia do wyobraźni, jak dobrze dobrany przykład liczbowy, a powyższy na pewno do takich należy...
7.3.Transformacja kluczowa
Zanim powiemy choćby słowo na temat transformacji kluczowej, musimy sprecyzować dokładnie dziedzinę zastosowań tej metody. Otóż jest ona używana.
Wyszukiwarka
Podobne podstrony:
Teoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAilS UJ - 2010/2011Drzewa przeszukiwaniaTeoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAilS UJ - 2010/2011Drzewa przeszukiwaniaTeoretyczne Podstawy Informatyki - Rok I - kierunek IS w IFAilS UJ - 2010/2011Drzewa przeszukiwaniaALG1 Przedmowa 11 Początkującym zalecane jest trzymanie się porządku narzuconego przez układ rozdziALG1 1.2. Jak to się niedawno odbyło, czyli. 211.2. Jak to się niedawno odbyło, czyli o tym kto „wyALG1 2.2. Ilustracja pojęcia rekurencji 31 od psychologii zachowań dziecka chwyciłby się za głowę zALG1 2.B. Typy programów rekurencyjnych 41 if (x==0) return 1; else return x*silnial !x-l); t Nie jALG1 i 2.10. Rozwiązania i wskazówki do zadań 51Zad. 2-3 Program nie należy do zbyt skomplikowanychALG1 3.2. Przykład 1: Jeszcze raz funkcja silnia... 61 W obliczeniach wykonywanych przez programistALG1 3.7. Analiza programów rekurencyjnych 71 Cały ten bagaż wzorów był naprawdę niezbędny! Dla zilALG1 Rozdział 4Algorytmy sortowania Tematem tego rozdziału będzie opis kilku bardziej znanych metodALG 1 4.4. Uwagi praktyczne 91 4.4. Uwagi praktyczne 91 quick-gcc.cc int comp(const void *x, const vALG1 5.1 Listy jednokierunkowe 101 5.1 Listy jednokierunkowe 101 ELEMENT Aprzed=NULL,*po=inf.głowa;ALG1 5.1. Listy jednokierunkowe 111 i zarobków. (Rozbudowa tych struktur danych nie wniosłaby konceALG1 5.1 Listy jednokierunkowe 121 } cout << "ALG1 5.3. Stos 131 Idea klasy szablonowej polega na stworzeniu wzorcowego kodu, w którym typ pewnycALG1 5.5. Sterty i kolejki priorytetowe 141 Treść procedury DoGory nie powinna stanowić niespodzianALG1 5.6. Drzewa i ich reprezentacje 151 Jak łatwo zauważyć, w zależności od sposobu przechadzaniaALG1 5.8. Zbiory 161 sl=sł- C ; cout « "Zbiór SI - C = "; sl .pisz () ; cout << &więcej podobnych podstron