Szybkie przeszukiwanie tablic

0

Witam,

Mam problem bo nie moge znaleŹĆ szybkiego algorytmu na przeszukiwanie tablic.

Mam 2 tablice stringow i taki kod do znajdowywania elementu 1 tablicy w drugiej:

k:=high(tab1);
l:=high(tab2);
for i:=0 to k do
  begin
    o:=-1;
    repeat
    inc(o);
    until (tab1[i,2]=tab2[o,0]) or (o=l);  
    
    begin
    if (tab1[i,2]=tab2[o,0]) then
      begin
      tab1[i,7]:=tab2[o,3]; 
      ...
      end;
    end else
    begin
    ...
    end;
end;

zamiast repeat uzylem funkcji

o:=AnsiIndexText(tab1[i,2],buf);

w buf sa wartosci z tab2 z odpowiedniej kolumny, tyle ze ta funkcja dziala jeszcze wolniej...

Sama funkcja jest niby szybka ale jak tab1>100 000 i tab2>10 000 to juz trzeba troche poczekac zanim sie wszystko wykona...

Moje pytanie:
Macie moze jakies inne metody na przeszukanie tab1 i dopisaniu tam odpowienich wartosci z tab2?
Zastanawiam sie czy jesli przerobilbym to na lancuchy (1 dlugi string) predkosc wzroslaby, tylko jak pozniej na tym operowac?

Pozdrawiam!

0

Każdy z K elementów TAB1 porównujesz ze średnio L/2 elementami TAB2, razem LK/2.
Gdyby TAB2 była posortowana względem zerowej kolumny, wtedy dałoby się to zrobić w czasie K
LOG2(L).
Zamiast 50'000'000 wyszłoby 140'000, samo sortowanie jeżeli nie będzie bąbelkowe będzie szybkie.
Bisekcja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1