Algorytmy przeszukiwania
Szukanie elementu
Często spotykanym rodzajem przeszukiwania jest wyszukiwanie elementu posiadającego pewną szczególną własność, jak np. najmniejszy, największy, podzielny przez jedenaście - element taki możemy nazwać idealnym.
Algorytm znajdowania elementu idealnego polega na wstępnym przyjęciu, że elementem idealnym jest pierwszy z dostępnych, a następnie na porównywaniu kolejnych elementów z elementem dotychczas uznanym za idealny. Jeśli podczas porównania okaże się, że element porównywany jest bliższy ideałowi niż dotychczasowy ideał, to wykonuje się zamianę przyjmując za ideał element aktualnie porównywany.
Poniższy fragment kodu znajduje w ciągu liczb podawanych przez użytkownikaliczbę największą:Algorytm znajdowania elementu idealnego polega na wstępnym przyjęciu, że elementem idealnym jest pierwszy z dostępnych, a następnie na porównywaniu kolejnych elementów z elementem dotychczas uznanym za idealny. Jeśli podczas porównania okaże się, że element porównywany jest bliższy ideałowi niż dotychczasowy ideał, to wykonuje się zamianę przyjmując za ideał element aktualnie porównywany.
Write('Podaj pierwsza liczbę ciągu = ');ReadLn(Maksymalny);For I:=2 To N Do Begin Write('Kolejna liczba = '); ReadLn(Liczba); If Liczba>Maksymalny Then Maksymalny:=Liczba; End;
Przeszukiwanie binarne
Przeszukiwanie binarne jest algorytmem sprawdzającym czy uporządkowany rosnąco ciąg liczbowy N-elementowy zawiera szukaną liczbę x (nazywane jest też przeszukiwaniem połówkowym).
Algorytm przeszukiwania binarego wykorzystuje uporządkowanie ciągu liczbowego dzieląc gokażdorazowo na połowy. Poszukiwaną liczbęx porównuje się z liczbą środkowąciągu i w zależności od wyniku tego porównania przeszukiwana jest albo lewa, albo prawa część tablicy. Obszar poszukiwania wyznaczają dwa indeksy: start i stop . oznaczają one odpowiednio początek i koniec przeszukiwanego fragmentu tablicy - rozpoczynając przeszukiwanie zmiennym tym przypisujemy wartości start:=1 i stop:=N , zakończenie przeszukiwania następuje gdy przeszukiwany fragment tablicy zmaleje do jednego elementu, to znaczy, gdy start=stop .
Algorytm przeszukiwania binarego wykorzystuje uporządkowanie ciągu liczbowego dzieląc gokażdorazowo na połowy. Poszukiwaną liczbę
DANE: a - przeszukiwana tablica (posortowana rosnąco) x - poszukiwana liczba N - rozmiar tablicy WYNIK: prawda, jeżeli tablica "a" zawiera liczbę "x"
- Przyjmij:
start:=1; stop:=N; - Dopóki
start<stop; - Wyznacz środek przedziału
sr=(start+stop) Div 2 , - Jeżeli poszukiwana liczba
x jest nie większa niż liczba w środku tablicy, to odrzuć prawą jej część przyjmując zastop:=sr; - W przeciwnym wypadku odrzuć część lewą przyjmując za
start:=sr+1;
- Wyznacz środek przedziału
- Teraz
start=stop , zwróć prawdę jeślia[start]=x .
Brak komentarzy:
Prześlij komentarz