Я нашел этот цикл в исходном коде алгоритма. Я думаю, что подробности о проблемах здесь не актуальны, потому что это действительно небольшая часть решения.
void update(int i, int value, int array[], int n) {
for(; i < n; i += ~i & (i + 1)) {
array[i] += value;
}
}
Я действительно не понимаю, что происходит в этом цикле, это какой-то трюк? Я нашел нечто похожее по названию деревьев Фенвика, но они немного отличаются от того, что у меня здесь.
Любые идеи, что означает этот цикл?
Также найдено следующее:
"Бит Hack # 9. Изолируйте самый правый 0-бит.
y = ~ x и (x + 1) "