Вниз
Скачать: 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.03 c
4-1128497857
Rentgen
2005-10-05 11:37
2005.12.11
Каким способом проверить на замкнутость цепи?


14-1132162975
Knight
2005-11-16 20:42
2005.12.11
Вопрос к владельцам Nokia 6100... у кого есть прошивка?


14-1132148771
Yuri Btr
2005-11-16 16:46
2005.12.11
Проблема с RadioEthernet


3-1130322965
MakNik
2005-10-26 14:36
2005.12.11
Количесво дней в месяце


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




   Наверх