Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2008, 19:03   #11
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Можно завести бинарное дерево в соответствии с разложением числа по степеням двойки, "развесить" по нему числа из массива и на последней ветке повесить массив из всех индексов раскладывающегося таким образом числа в начальном массиве. Тогда всё сводится 1) к проходу по дереву (до 32-х уровней) 2) поиску в массиве индексов (вряд ли он будет большим) индексов таких, что l <= i <= r, если такое число вообще содержится в дереве 3) предварительному выходу из поиска, если число не нашлось. Можно, в принципе, оптимизировать дерево - разбивать число не побитно, а побайтно, скажем, тогда в каждом узле будет массив.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элемента ЭД4-0014 Помощь студентам 12 05.06.2008 21:47
Как проверить существование потока? John_chek Общие вопросы Delphi 3 17.01.2008 15:16
создание элемента Романнн Общие вопросы Delphi 6 13.12.2007 21:07
Проверка на существование Lonix Общие вопросы Delphi 2 19.03.2007 19:42