
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.60] |
![]() |
|
Сообщ.
#1
,
|
|
|
Есть несколько числовых интервалов. Например,
1) 0-100 2) 40-50 3) 120-180 4) 200-300 5) 800-1000 6) 299-801 7) 1001-1100 ... Необходимо вычислить какие интервалы пересекаются. Какой наиболее оптимальный алгоритм? |
Сообщ.
#2
,
|
|
|
Отсортировать структуры вида (Координата, ЛевыйИлиПравыйКонец, IdИнтервала) по полю координаты
Затем проход по массиву. Встретили левый конец - добавили в список активных интервалов, встретили правый - удалили, выводя в результат пересечения с активными интервалами. P.S. Если понадобятся еще какие-то действия, может быть лучше использовать структуру данных interval tree |