Вниз
Скачать: CL | DM;

Поиск по текстовому файлу   Найти похожие ветки 

← →
TG ©   (2005-11-18 15:49) [0]

У важаемые мастера. Помогите с написание алгоритма поиска по текстовому файлу. Мне нужен алгоритм более менее быстрый, а то у меня получаеться какойто уж тормознутый. Ну или хотябы где можно найти инфу на эту тему?


← →
alex_*** ©   (2005-11-18 16:51) [1]

Ты опиши свой алгоритм для начала


← →
Igorek ©   (2005-11-18 16:51) [2]

Ищем первый символ.. нашли - второй совпадает? да - третий... нашли подстроку; нет - ищем первый дальше.


← →
Плохиш ©   (2005-11-18 16:54) [3]

Pos


← →
Serg1981 ©   (2005-11-18 23:51) [4]

А может текстовый файл загрузить в TStringList ? Поиск в памяти происходит мгновенно.


← →
TUser ©   (2005-11-19 09:10) [5]

См. например, алгоритм Кнута-Мориса-Прата.


← →
TUser ©   (2005-11-19 09:33) [6]

Есть и более быстрые реализации такого алгоритма, но я привожу простейшую.

program kmp;
{$apptype console}
uses Classes, SysUtils;

function KMPPos (const Text: string; const Template: string): integer;
var sp: array of integer;
    i, j, k: integer;
begin
  result:=-1;

  SetLength (sp,length(Template));
  j:=0; sp[0]:=0;
  for i:=2 to length(Template) do begin
    inc (j);
    while j <> 0 do
      if Template[i] <> Template[j] then
        j:=sp[j-1]
        else break;
    sp[i]:=j;
    end;

  j:=1; k:=1;
  for i:=1 to length(Text) do
    if Text[i] = Template[j] then begin
      inc (j);
      if j = length(Template)+1 then begin
        result:=k;
        Break;
        end;
      end else begin
      k:=k+j-sp[j];
      j:=sp[j]+1;
      end;

  SetLength (sp,0);
end;

var List: TStrings;
   i: integer;
begin
 List:=TStringList.Create;
 List.LoadFromFile(ParamStr(1));
 i:=KMPPos(List.Text,ParamStr(2));
 if i = -1 then
   writeln ("not found")
   else
   writeln ("first entry in "+inttostr(i));
 List.Free;
end.


← →
AlexWlad ©   (2005-11-19 11:37) [7]

Неплохая статья.

http://www.rsdn.ru/article/alg/textsearch.xml


← →
TUser ©   (2005-11-19 11:41) [8]

На алголисте больше
http://algolist.manual.ru/search/esearch/index.php



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
1-1131797065
zxc
2005-11-12 15:04
2005.12.11
одновременно avi показывать и рисовать


5-1116486397
Priest
2005-05-19 11:06
2005.12.11
Как в DreamDesigner подключить скрипт к форме


2-1132527337
Dub
2005-11-21 01:55
2005.12.11
Редактирование файла


4-1128951430
Gluk
2005-10-10 17:37
2005.12.11
Перехват окна сохранения


14-1131958924
Юрий Зотов
2005-11-14 12:02
2005.12.11
Чемпионат сайта по бильярду




   Наверх