|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.10.2014, 14:27 | #21 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
ИМЕННО:
делаем обязательные и часто используемые быстрые операции типа добавления и удаления при желании добавляем медленные и запускаемые по желанию операции типа сборка мусора/упаковка/сжатие. НО! после упаковки повторное использование идентификаторов потребует МЕДЛЕННОЙ и частой если удалили много(!) вставки в произвольное место массива. Либо реализации и использования ОТДЕЛЬНОЙ процедуры сортировки (опять же медленной). Чтобы можно было обеспечить быстрый поиск. Цитата:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 03.10.2014 в 14:33. |
|
03.10.2014, 15:04 | #22 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Опять вопрос - почему именно обязательно массив?
|
03.10.2014, 17:31 | #23 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,777
|
Товарищи, вы зашли не в ту степь. Для дерева в БД лучше посмотреть какую-либо практическую реализацию иерархических запросов, вроде connect by/start with в Oracle. В этом случае рекурсию выполняет сервер, но данные хранятся в естественном виде. На других СУБД при наличии индекса легко сэмулировать рекурсию с клиента.
Если же БД необязательна, стоит обратить внимание в сторону двоичных деревьев или двоичных деревьев поиска. В силу своей природы иерархические данные не могут иметь числового индекса, это ведь не массив! Данные в дереве всегда адресуются по ключам -- и в БД, и в двоичных деревьях. |
03.10.2014, 22:24 | #24 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
||
04.10.2014, 03:25 | #25 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,777
|
Они должны быть уникальны и отсортированы, то есть представлять собой настоящий ключ. В двоичном дереве сортировка выполняется реализацией дерева, в БД -- СУБД, где используется разновидность двоичных деревьев.
|
13.10.2014, 20:24 | #26 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Всем спасибо за участие в теме. Появился другой вопрос смежного характера (решил не плодить темы). Суть в операции перемещения. Итак требуется переместить одну ветвь дерева в другую. Естественно может возникнуть ситуация когда в дочернюю ветвь пытаются перенести предка и это вызовет бесконечное создание ветвей (вот раньше такое можно было наблюдать в первых версиях Norton Commander).
Вопрос: Могу ли я теоретически, разбирая только путь и не проверяя физически все соответствующие узлы, проверить такую ситуацию. Чисто интуитивно чувствую что да, достаточно проверить что все узлы копируемой ветви полностью повторяют (и/или короче) приемника. Например: c:\1 --> c:\1\2 Проводник будет ругаться Чисто бездоказательно я тоже. Так можно ли проводить проверку путей не касаясь самих узлов? Очевидно что символическая проверка путей быстрей и проще в реализации...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 13.10.2014 в 20:27. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с деревьями | Alexey_kor | Общие вопросы C/C++ | 0 | 29.04.2012 19:14 |
Работа с двоичными деревьями. | Maksik | Фриланс | 4 | 22.06.2010 22:01 |
Рисонок домика с деревьями!!! | Cheerful-mermaid | Помощь студентам | 5 | 08.04.2009 22:32 |
Работа с деревьями и строками | Михаил_1987 | Помощь студентам | 1 | 27.01.2009 17:12 |