![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Здравствуйте.
Есть текст, предположим, 50000 тыс слов. Его надо обработать: разбить на слова (по пробелам), создать массив, который бы не содержал дубликатов слов и второй массив, считающий кол-во повторений того или иного слова, который бы был связан по ключу с первым. Так вот, задача вроде бы реализована, но, поскольку поиск слов в TStringList реализован через indexOf, то поиск может быть очень медленным, порой до нескольких минут. Вопрос: как можно оптимизировать поиск, возможно, еще что-то? Дополнение №1: Могу выложить исходик, если будет надо. Дополнение №2: В инете откопал такой вот пример, может, действительно, быстрее будет проверять: вставилась ли строка? Код:
var Strlist: TStringList; begin Strlist := TStringList.Create; Strlist.Duplicates := dupError; Strlist.Add('aa'); {добавляем первую строку} try Strlist.Add('aa'); {добавляем дубликат} ShowMessage('Ok'); except on EStringListError do ShowMessage('Duplicate'); end; end; Спасибо! Последний раз редактировалось serbius, 02.06.2012 в 21:00. |
#2
|
|||
|
|||
![]() Код:
Stringlist.sorted := true; // должен ускорить по идее |
#3
|
|||
|
|||
![]() Цитата:
[0]=как [1]=дела [2]=вася Будет ли так после сортировки: [2]=вася [1]=дела [0]=привет |
#4
|
|||
|
|||
![]() Цитата:
Ой, это же не php) тут полюбому надо будет идти по индексу... что-то уже совсем запутался |
#5
|
||||
|
||||
![]() Добавлять слова в список (StringList) нужно после устанвки свойства Dulpicates в соответствующий режим. Тогда повторяющиеся слова автоматом будут удалены из списка.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
||||
|
||||
![]() И зачем нужно так изголятся, стараясь запихать такой объем в StringList? Базы данных способны обрабатывать намного большие объемы с приемлимой скоростью выборки. Для 50000 слов я думаю индексный поиск займет доли секунды.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |