Zaloguj się, by sprawdzić wiadomości
Strona główna Grupy Użytkownicy Twoje konto Statystyki Rejestracja Zaloguj

TWOJA STRONA NA NASZYM SERWISIE! Wiecej info --> http://osin.ovh.org/stronadlaciebie.php !

TWOJA STRONA NA NASZYM SERWISIE! Wiecej info --> http://osin.ovh.org/index1.php !


Poprzedni temat «» Następny temat
[Delphi] Wyszukiwanie interpolacyjne
Autor Wiadomość
Jurk 
Administrator
Admin/Programista ;]


Dołączył: 23 Kwi 2008
Posty: 291
Skąd: Wawa
Wysłany: 2008-11-02, 11:49   [Delphi] Wyszukiwanie interpolacyjne

Wyszukiwanie interpolacyjne (Algorytmy i struktury danych – Rod Stephens)


Algorytm działa na uporządkowanym zbiorze, który może być zapisany w tablicy statycznej, dynamicznej lub liście. Jest szybszy w działaniu niż przeszukiwanie binarne. W czystej postaci sprawdza się na zbiorze, w którym wzrost kolejnych elementów jest jednostajny (1,2,3,4,5...)Ale wprowadzając dodatkowe zabezpieczenie przed możliwością dzielenia przez ZERO może być zastosowany do dowolnego uporządkowanego zbioru (1,6,7,7,7,10,20,200,...) lub (1,100,156,980,1456,...) Kompletny opis- teoretyczny patrz książka „Algorytmy i struktury danych” autor Rod Stephens, wydawnictwo Helion

Nasz zbiór będziemy przechowywać w tablicy dynamicznej zdefiniowanej na naszym własnym typie tTab (oczywiście lepszym rozwiązaniem byłby typ wskaźnikowy, którego wskaźniki byłby przechowywane w TList co nie jest trudne do zaimplementowania)


Kod:
typ
tTab=array of LongWord;


Kod:
var
tablica:tTab;//tu ładujemy posortowane dane



Nagłówek funkcji wyszukiwania

Kod:
function PrzeszukiwanieInterpolacyjne(A:tTab;wartosc:longInt;
                                        L,P:LongInt;
                                        var kroki:LongInt):LongInt;



A- zbiór wartości zapisanych w tablicy
Wartosc- to co szukamy
L,P- dolny i górny zakres zbioru (na przykład L:=0, P:=high(A) );
Kroki- informacja po ilu krokach znaleziono szukaną wartość (można z tego zrezygnować, zmienna wprowadzona jest teoretycznie aby można było porównać algorytm z przeszukiwaniem binarnym)


Ciało funkcji

Kod:
function PrzeszukiwanieInterpolacyjne(a:tTab;wartosc:longInt;
                                        L,P:LongInt;
                                        var kroki:LongInt):LongInt;
var
 srodek:LongInt;
begin
 // -1 to sygnal braku szukanego elementu
 kroki:=0;
 while L<=P do begin
  //unikniecie dzielenia przez Zero
  if a[L]=a[P] then begin
     if a[L]=wartosc then result:=L else result:=-1;
     exit;
  end;//koniec a[L]=a[P]
  //znajdź nowe przyblizenie interpolacyjne
  srodek:=Round(L+(wartosc-a[L])*(P-L)/(a[P]-a[L]));
  //sprawdz czy wyliczony srodek miesci sie w zakresie tablicy
  if ((srodek<L)or(srodek>P))then begin
     Result:=-1;
     exit;//nie to wyskocz
  end;//Koniec testu granicy
  inc(kroki);
  //test znalezienia
  if wartosc=a[srodek]then
   begin
    //gdy znalazł
    result:=srodek;
    exit;
   end else
   //jak nie znalazł to obetnij zbior
   if wartosc<a[srodek] then
      P:=srodek-1//szukaj w dolnej polowce zbioru
      else
      L:=srodek+1;//szukaj w gornej polowce zbioru
  //koniec obcinania
 end;//Koniec while L<=P
 result:=-1;//przymij ze nie znaleziono
end;



I to tyle
 
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group

page rank
Strona wygenerowana w 0,58 sekundy. Zapytań do SQL: 7


=====
=======================================================================
Wymiana Linkow:

Najwieksza wyszukiwarka craków w sieci
Wymiana linków Ogloszenia motoryzacyjne Domy Bezpłatne ogłoszenia Praktyki Noclegi Anonse matrymonialne Darmowe galerie Szablony stron Wizytówki www Web templates Strony internetowe Baza stron www Darmowe domeny Check Link Popularity Darmowe porady prawne Plany miast Przedruk artykułów

=======================================================================
Katalogi:

Polski Katalog Stron Internetowych Falenica - katalog stron internetowych Katalog Stron www Katalog Stron DARMOWY KATALOG STRON | DODAJ DARMOWY WPIS katalog stron internetowych www Katalog Stron SEO Katalog 3CO

Katalog stron, toplisty, narzędzia webmastera Noclegi w Polsce Katalog Stron Hurricane jaclaw Darmowy wpis Katalog stron Natal Sznurkownia - Katalog www, sznurków i linków dla pajšków i pingwinków