![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Нужна реализация самобалансирующегося (красно-черного или АВЛ, не суть важно) дерева на Delphi. Ибо скорость стандартного поиска TList.IndexOf не устраивает никак. Что посоветуете? Желательно что-то готовое, удобное и напоминающее интерфейсом TList, чтобы просто заменить и не вникать долго.
p.s. Кстати, может есть в поставке Delphi такое чудо? В С++ и в Java есть на базе красно-черного дерева структуры данных, может и в Delphi появились?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 02.04.2010 в 21:34. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Может просто TList дописать по аналогии с TStrings. Что-то вроде:
Код:
Код:
|
![]() |
![]() |
![]() |
#4 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
![]()
Баламут, у меня есть эта книга, но все равно спасибо, может когда нибудь сделаю реализацию TList скоростную, а пока хочется что-то готовое, времени нет на это.
alexBlack, это наверное получше стандартного списка, но мне кажется все равно медленно будет работать, там полный перебор при поиске. Нашел библиотеку для Delphi где есть ассоциативные массивы на базе красно-черного дерева. Прикрутил, работает, то что надо, быстрее раз в 20 стало. Тут >>> есть описание, там и другие библиотеки упоминаются, но я сделал на той, о к-рой статья, там много чего еще в ней есть, практически реализация STL для Delphi. Во вложении адаптированный для D2009 главный модуль библиотеки (к статье приложена версия адаптированная для D7), еще я там отключил пул, в начале юнита директива, с ним программа вываливалась с исключением. Насчет остальных модулей не знаю, мне они не понадобились, только этот и еще один (mwFixedRecSort.pas), но там без изменений.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 03.04.2010 в 18:44. |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Не-а, не полный перебор. В Find используется деление списка пополам, как в QuickSort. т.е. теоретически log2(n) операций для поиска.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. | Каравай | Microsoft Office Excel | 13 | 17.02.2010 09:53 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body | tabikA | HTML и CSS | 5 | 24.02.2009 21:50 |
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах | mihali4 | Свободное общение | 1 | 17.01.2009 01:43 |