Изменения

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

Дерево Фенвика

570 байт добавлено, 19:27, 16 апреля 2015
Нет описания правки
От выбора функции зависит время работы операций над деревом. Рассмотрим функцию, позволяющую делать обе операции за время <tex> O(\log n) </tex>.
<tex> F(i) = i - 2^{h(i)} + 1, </tex> где <tex> h(i) </tex> - количество единиц в конце бинарной записи числа <tex> i </tex>. Эту функцию можно записать так: <tex> F(i) = i - t(i), </tex> где <tex> t(i) = 2^{h(i)} - 1, </tex> то есть число, состоящее из <tex> i </tex> единиц. Это значит, что функция заменяет все подряд идущие единицы в конце числа на нули. Эта функция задается простой формулой: <tex> F(i) = i \And (i + 1) </tex>, где <tex> \And </tex> — это операция побитового логического "И". При побитовом "И" числа и этого числа, увеличенного на единицу, мы получаем число без последних подряд идущих единиц.
== Запрос изменения элемента ==
146
правок

Навигация