![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
Всем привет.
Тема не касается именно одного языка...Код в примере на Delphi - для быстрой проверки алгоритма... Вобщем нужен эдакий быстрый поиск, то ли фильтрация...вобщем смысл в чем - есть список названий чего либо, ну для примера пусть будут названия книг, хранятся они в текстовом файле. В программе пользователь, например в Edit, начинает вводить название книги, и по мере набора пользователю всего лишь нужно будет отображать подсказки в виде DropDown списка под Edit"ом. Самое первое, что пришло на ум - это просто перебор в цикле по событию Change Эдита: Код:
Так вот, может есть специальные алгоритмы для реализации вот такого "быстрого поиска" (фильтрации)?
Будь проще и люди к тебе потянутся
|
![]() |
![]() |
![]() |
#2 |
***
Участник клуба
Регистрация: 30.07.2007
Сообщений: 1,162
|
![]()
Ну если предположить что названия книг выглядят так:
Кухня Советы и рецепты Мы под водопадом И поиск считает точное совпадение, а не ищет по отдельным словам. То попробовать отсортировать в алфавитном порядке например. И дальше в поиске, если совпадений нет то заканчиваем поиск, есть продолжаем. Ну и глянуть внутрь как реализован внутри stringlist метод IndexOf или метод Find. Последний раз редактировалось dr.Chas; 21.09.2011 в 08:35. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А входимость проверяется именно в любом месте строки, а не сначала? При таком подходе мало вероятно, что более быстрый алгоритм найдется. Можно загнать список строк в ClientDataSet и использовать фильтрацию и DBComboBox, быстрей не будет, но симпатичней.
ADD Можно вместо StringList просто массив строк использовать - чуток побыстрей будет наверно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 21.09.2011 в 09:17. |
![]() |
![]() |
![]() |
#4 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
||
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
Я уже где-то писал о подомном. Делал так:
Разбил файл, на отдельные файлы по-алфавиту и внёс в них все данные. При наборе первой буквы в Edit-е, открывался файл с нужной начальной буквой, а потом происходил поиск внутри этого файла обычным способом. Громоздко, но получилось довольно шустро. Ещё способ. Делается вторичный файл и в него записываются адреса строк первичного файла, с которого начинается отсчёт первой буквы. Концом алфавита, является ссылка на следующую строку. Например: А=1 Б=15 В=25 и т.д. Можно список ссылок включить в этот-же файл (с начала файла). Сложность этого метода в том, что при дополнении списка, необходимо менять инфу во-вторичном файле. Смысл в том, что нужно найти наиболее быстрый алгоритм, а не увеличить скорость работы алгоритма, за счёт выбора языка.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder Последний раз редактировалось Smitt&Wesson; 21.09.2011 в 08:56. |
![]() |
![]() |
![]() |
#6 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
Спасибо всем ответившим.
Направление, что искать и пробовать - ясно + нашел еще некоторую информацию.
Будь проще и люди к тебе потянутся
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Правильный результат разности полей содержащих "NULL" | KBO | БД в Delphi | 2 | 06.08.2011 02:55 |
Правильный параметр "командная строка" в макрокоманде "ЗапускПриложения". | peektoseen | Microsoft Office Access | 3 | 10.03.2010 19:53 |
"Быстрый вызов" action-ов data модуля из другово окна | Altera | Общие вопросы Delphi | 0 | 22.09.2009 16:05 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
мысли в слух или "быстрый режим" в работе с БД | Квэнди | Свободное общение | 2 | 08.02.2007 09:38 |