Показать сообщение отдельно
  #4  
Старый 29.03.2009, 00:10
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ненадо выдергивать слова по одиночке, надо сразу загрузить в мемо содержимое текстового файла, т.к. и первый и второй варианты работают с уже загруженным списком. Загрузка реализуется методом самого компонента TMemo:
Код:
 Memo1.Lines.LoadFromFile('c:\dictionary.txt');

В первом варианте для поиска и сортировки используется компонет TStringList, собственно он и создан был для подобных операций.
Сначала список сортируется, т.к. без этого невозможен корректный поиск методом Find.
Во втором варианте делается тоже самое, что и в TStringList, только реализованы свои функции сортировки и поиска.
Сортировку расписывать особо нечего, берется первый и следующий элемент, если первый элемент больше второго, то элементы меняются местами и так до конца списка. Это не самый быстрый способ сортировки, зато наиболее простой в реализации.
С поиском тоже в принципе достаточно просто. Основное условие правильного поиска - обязательная сортировка. Берется список и сравнивается элемент из середины списка с поисковым значением. Если списочный элемент меньше, значит искомое слово находиться ближе к концу списка, если больше, то наоборот ближе к началу списка. Далее операция повторяется, только границы поисковые будут все время уменьшаться 1/2, 1/4, 1/8, 1/16 и т.д. пока не найдется нужный элемент.
Данный способ сортировки очень быстр даже для очень больших списков.
Если взять список в 100000 слов, то результат будет получен максимум за 16 проверок.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием