Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 14:54   #11
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

http://ru.wikipedia.org/wiki/Алгоритм_Бойера_—_Мура
пыщь
JTG вне форума Ответить с цитированием
Старый 30.09.2009, 15:36   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

JTG, 1) на ту тему где я ссылался (чтение реально больших файлов) приведёна программа, реализующая поиск по алгоритму Боейра=Мура.

2) Вы, надеюсь, не будете утверждать, что поиск в мегабайтном файле самым лучшим алгоритмом будет быстрее, чем двоичный поиск (по отсортированному списку) (это метод TStringList.Find()) или поиск в БД по индексу (SELECT * from Table where Pole Like "Что-то%" ) ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.09.2009, 15:45   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Не знаю, писал ли кто уже (читал, но может пропустил). Предлагаю разделить мегабайт на тридцать. Нафига искать сразу во всем мегабайте? Создайте допустим на каждую первую букову свой файл и ищите в нем. Искать в маленьком StringListe быстрей чем в большом StringListe . Для мягкого знака файл можешь не создавать . Вроде как индексация есть и базу перестраивать не надо.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 30.09.2009 в 15:50.
Utkin вне форума Ответить с цитированием
Старый 30.09.2009, 16:20   #14
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Создайте допустим на каждую первую букову свой файл и ищите в нем.
Хм... Хороша идейка, надо над ней подумать.
Цитата:
Почему не хотите СУБД
А вот здесь укажу конкретику: Сколько будет занимать места база данных, имеющая в себе 300 000 слов, да плюс все падежи (т.е. 300 000 * 12 = 3 600 000 записей?) А в txt формате будет около 6-7 МБ.

А как работает метод Sort у стринГлиста()? Никогда его не юзал...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 30.09.2009, 19:06   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Хм... Хороша идейка, надо над ней подумать.

А вот здесь укажу конкретику: Сколько будет занимать места база данных, имеющая в себе 300 000 слов, да плюс все падежи (т.е. 300 000 * 12 = 3 600 000 записей?) А в txt формате будет около 6-7 МБ.

А как работает метод Sort у стринГлиста()? Никогда его не юзал...
Та ну как и везде, единственный косяк, как и везде, цифры воспринимаются как строки поэтому сортируются криво. Прямо таки ни когда? Не Мемо не RichEdita не знаете? А это по сути его обертки.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.09.2009, 19:42   #16
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Я имею в виду не юзал Sort, а Rich конечно использовал.
Цитата:
поэтому сортируются криво.
Насколько криво, если я буду использовать ТОЛЬКО ТАКИЕ БУКВЫ?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 30.09.2009, 19:48   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну с буквами вроде норм.
Код:
function SortStrings(const aFileName: String);
var
  TmpStringList: TStringList;
begin
  TmpStringList := TStringList.Create;
  try

    TmpStringList.LoadFromFile(aFileName);

    TmpStringList.Sorted := True;

    TmpStringList.SaveToFile(aFileName);
  finally
    TmpStringList.Free;
  end;
end;
Ну как вариант (код не мой).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 30.09.2009 в 19:51.
Utkin вне форума Ответить с цитированием
Старый 30.09.2009, 19:59   #18
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Проверил. Работает замечательно. Значит проблема сортировки решена. Сейчас проверю на больших файлах...

Мда....
Цитата:
Dr.Web
D:\PROGRAMMING\DELPHI\Delphi\Projec ts\Project43.exe - инфицирован Trojan.DownLoad.47164
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  TmpStringList: TStringList;
begin
  TmpStringList := TStringList.Create;
  try

    TmpStringList.LoadFromFile('1.txt');

    TmpStringList.Sorted := True;

    TmpStringList.SaveToFile('2.txt');
  finally
    TmpStringList.Free;
    Windows.Beep(700,700);
  end;
end;
И что, теперь даже бибику нельзя юзать???
-------------------------------------------------
Убрал бибику, зарядил 2 мегатонную книгу (предварительно три раза скопировал 650 кб. и вставил). Результат поражает:
Цитата:
человеческим именем, но, с другой стороны, фамилия его уже прочно
человеческим именем, но, с другой стороны, фамилия его уже прочно
человеческим именем, но, с другой стороны, фамилия его уже прочно
человеческих детенышей, поступком, этически безупречным!
человеческих детенышей, поступком, этически безупречным!
человеческих детенышей, поступком, этически безупречным!
человеческую жизнь, не продлевая ее магическими способами и не улучшая
человеческую жизнь, не продлевая ее магическими способами и не улучшая
человеческую жизнь, не продлевая ее магическими способами и не улучшая
человеческую жизнь. Высокий, статный, красивый мужчина средних лет в
человеческую жизнь. Высокий, статный, красивый мужчина средних лет в
человеческую жизнь. Высокий, статный, красивый мужчина средних лет в
И ВСЕГО ЗА 5 СЕКУНД!
Я даже на буквы тогда разбивать наверное не буду...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 30.09.2009 в 20:07.
Alex Cones вне форума Ответить с цитированием
Старый 01.10.2009, 07:46   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Лучше разбей - надо стремиться к совершенству . Представь, что твою прогу заюзают на древнем, как бивни мамонта, компе...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 01.10.2009, 08:34   #20
grenles
минимакс
Участник клуба
 
Аватар для grenles
 
Регистрация: 11.06.2008
Сообщений: 1,143
По умолчанию

Только в алфавитном? Тогдга не проблема. Проблема будет в том, что-бы записать в базу слово с буквы "а".

ПО поводу вставки в дерево - слово можно также вставлять поиском, только сохраняя ссылку на предыдущий шаг.
Если слово не найденно в дереве, то его надо вставить перед меньшим после большего.
Единственный косяк - это балансировка дерева. чтобы оно не стало прямой линией. Тогда смысл теряется.

ПО поводу TsringsList - не знаю. Я имел ввиду настоящее дерево.
Где

Код:
MTree =  record
 element : string;
 rigth : TMTree;
 left : TMTree;
end
вОЗМожНо я отстал от жизни и TSringsList все это делает.

Идея с 33 файлами (-2 = "Ъ" и "Ь") - это тоже решение.
Как делать бинарные файлы не знаю, но может это поможет.
А вообще-то - почему бы не перейти на СУБД и не на SQL?
Хотя - свое решение может для конкретного случая оказаться лучше.

Кстати. вопрос почти в тему. А как организованна автоподсказка в браузерных поисковиках, когда вводишь слово, а внизу буквально за 1.-2 секунды уже готовые варианты написаний.
Не по той же технологии? Поиск в словаре слов?
и это пройдет...

Последний раз редактировалось grenles; 01.10.2009 в 08:37.
grenles вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод текстовой информации из документа TXT. soonner PHP 2 09.05.2009 21:57
Как удалить текст до слова, потом от слова ? littlecoder Общие вопросы Delphi 7 29.12.2008 00:57
найти оптимальный план производства Baxxter Microsoft Office Excel 12 25.09.2008 23:45
Какой оптимальный способ в Delphi для перевода 10 системы счисления в 16с.с SERGOO Общие вопросы Delphi 5 25.05.2007 19:02