Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
14-1132649243
Pazitron_Brain
2005-11-22 11:47
2005.12.11
Какое будет будущее?


2-1132551144
KitsumVI
2005-11-21 08:32
2005.12.11
Композитивный класс


14-1132300801
vopros
2005-11-18 11:00
2005.12.11
дайте, пожайлуста ссылку на ГОСТ на ТЗ для написанио ПО


2-1132666961
DelphiLexx
2005-11-22 16:42
2005.12.11
Что такое TrueType шрифты


4-1128575004
ProgramMaster
2005-10-06 09:03
2005.12.11
Отслеживание появления окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский