Изменения

Перейти к: навигация, поиск

Сжатое многомерное дерево отрезков

18 байт убрано, 01:00, 23 января 2017
Псевдокод
<br>
===Псевдокод===
'''build_subarray_treebuildSubarrayTree'''('''element[]''' array):
<font color=green>// построение одномерного дерева отрезков на массиве array с сохранением подмассива в каждой вершине </font>
'''build_normal_treebuildNormalTree'''('''element[]''' array):
<font color=green> // построение обычного одномерного дерева отрезков на массиве array </font>
'''get_inside_arraygetInsideArray'''(vertex v):
<font color=green>// получение подмассива, сохраненного в вершине vertex </font>
'''build_compressed_treebuildCompressedTree'''('''element[]''' array, '''int''' coordinate = 1): <font color=green>// рекурсивная процедура построения сжатого дерева отрезков</font>
'''if''' coordinate < p
sort(array, coordinate); <font color=green>// сортировка массива по нужной координате </font> segment_tree segmentTree = build_subarray_treebuildSubarrayTree(array); '''forforeach''' each (v: vertex v '''in''' segment_tree) segmentTree build_compressed_treebuildCompressedTree(inside_arraygetInsideArray(v), coordinate + 1);
'''if''' coordinate == p
sort(array, coordinate); build_normal_treebuildNormalTree(array);
==Анализ полученной структуры==
133
правки

Навигация