Algorytmy i struktury danych/Wyszukiwanie: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
| Linia 46: | Linia 46: | ||
* wszystkie klucze w lewym poddrzewie węzła ''x'', mają wartości mniejsze niż klucz węzła ''x'', | * wszystkie klucze w lewym poddrzewie węzła ''x'', mają wartości mniejsze niż klucz węzła ''x'', | ||
* wszystkie klucze w lewym poddrzewie węzła ''x'', mają wartości większe lub równe niż klucz węzła ''x''. | * wszystkie klucze w lewym poddrzewie węzła ''x'', mają wartości większe lub równe niż klucz węzła ''x''. | ||
{{algorytm|Schemat wyszukiwania elementu do drzewa BST | |||
function Szukaj(wezel, klucz) | |||
'''if''' (wezel=='''nil''') | |||
'''return''' BRAK ELEMENTU | |||
'''if''' (wezel.klucz=klucz) '''then''' | |||
'''return''' ELEMENY ISTNIEJE | |||
''' else if (klucz < wezel.klucz) '''then''' | |||
'''return''' Szukaj(wezel.lewePoddrzewo, klucz) | |||
''' else if (klucz > wezel.klucz) '''then''' | |||
'''return''' Szukaj(wezel.prawPoddrzewo, klucz) | |||
'''end'''; | |||
}} | |||
TODO | TODO | ||
* wstawianie | * wstawianie | ||
* usuwanie | * usuwanie | ||
Wersja z 11:09, 27 lip 2006
Wyszukiwanie
W niniejszym wykładzie opiszemy podstawowe techniki dotyczące wyszukiwania.
Zajmiemy się również prostymi strukturami słownikowymi, które oprócz
wyszukiwania, umożliwiają dodawanie i usuwanie elementów.
Wyszukiwanie liniowe
TODO
function Szukaj(x, A[1..n])
begin
for i:=1 to n do
if A[i]=x return i;
return brak poszukiwanego elementu;
end
Wyszukiwanie binarne
TODO
function WyszukiwanieBinarne(x, A[1..n])
{ zakładamy, że tablica A, jest uporządkowana rosnąco }
begin
l:=1;r:=n;
while (l<=r) do begin
m:=(l+r) div 2;
if (A[m]<x) then l:=m+1
else if (A[m]>x) then r:=m-1
else return m; { ponieważ A[m]=x }
end;
return brak poszukiwanego elementu;
end
Drzewa poszukiwań binarnych
Drzewa poszukiwań binarnych, to zwykłe drzewa binarne, których węzły dodatkowo przechowują klucze. Dodatkowo wymagamy by klucze spełniały następującą własność:
Dla dowolnego węzła x:
- wszystkie klucze w lewym poddrzewie węzła x, mają wartości mniejsze niż klucz węzła x,
- wszystkie klucze w lewym poddrzewie węzła x, mają wartości większe lub równe niż klucz węzła x.
Algorytm {{{1}}}
{{{3}}}
TODO
- wstawianie
- usuwanie
Haszowanie
TODO