Szybkie przeszukiwanie tablic

Odpowiedz Nowy wątek
2007-04-17 21:00
0

Witam,

Mam problem bo nie moge znalesc 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!

Pozostało 580 znaków

2007-04-18 10:05
mgr.Dobrowolski
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.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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

Robot: Yandex