Skip to main content.

Úvod

Okrem bližšie popisovaných spôsobov vyhľadávania existujú aj rôzne ich variácie, ktoré stoja za zmienku. Najmä preto, lebo sú ľahko naprogramovateľné a zvyčajne rýchlejšie ako algoritmy, z ktorých pôvodne vychádzajú.

^ TOP

Jump search

Tento algoritmus je zrýchlenie sekvenčného vyhľadávania.
Prechádza poľom tak, že kontroluje každý j-ty prvok. Takto nájde oblasť, kde sa hľadaný prvok nachádza a túto oblasť skontroluje obyčajným sekvenčným vyhľadávaním.
Pre n prvkov je optimálne, keď j je odmocnina z n.

^ TOP

Interpolation search

Je to variácia binárneho vyhľadávania, teda vstupné pole musí byť utriedené a postupne sa určité časti poľa vynechávajú z budúceho hľadania. Pole sa prehľadáva tak, že ďalšia pozícia sa vypočíta na základe interpolácie hľadaného kľúča a hodnôt na koncoch intervalu.
Jednoduchý príklad je vyhľadávanie v slovníku. Ak hľadáme slovo „algoritmus“, vieme že máme knihu otvoriť niekde na začiatku. Podľa tam nájdeného kľúča potom vieme približne určiť koľko strán a ktorým smerom máme nalistovať.

     function search( key : typekey; var r : dataarray ) : integer;
     var high, j, low : integer;

     begin
     low := 1;
     high := n;
     while (r[high].k >= key) and (key > r[low].k) do
          begin
          j := trunc( (key-r[low].k) / (r[high].k-r[low].k) *
                         (high-low) ) + low;
          if      key > r[j].k then low  := j+1
          else if key %lt; r[j].k then high := j-1
                               else low  := j
          end;
     if r[low].k = key then search := low  {*** found(r[low]) ***}
                       else search := -1;  {*** notfound(key) ***}
     end;       
        

^ TOP