Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как оптимизировать функцию фильтрации? (https://javascript.ru/forum/dom-window/84311-kak-optimizirovat-funkciyu-filtracii.html)

Alexandroppolus 03.08.2022 19:55

Цитата:

Сообщение от voraa (Сообщение 547119)
В среднем M, но в каком то одном особенном 1 обращение. Как тогда k прибавлять?

Это как раз тот кейс, когда выскочили на один из следующих месяцев.

Тогда мы просто обходим перепрыгнутый отрезок пошагово, и подбираем все первые числа месяцев, которые на нем оказались.

Alexandroppolus 03.08.2022 20:42

пусть на месяц приходится (в среднем) М записей.

тогда если обходить подневно, то на один месяц будет М проверок.

если применить мою оптимизацию однократно, то будет M^(1/2) больших прыжков длиной M^(1/2), и один неудачный отрезок тоже длиной M^(1/2), который идем по дням.
итого 2 * M^(1/2) проверок.

но можно пойти дальше и сделать 3 "слоя": на первом прыгать через M^(2/3), на втором - через M^(1/3) внутри неудачного отрезка.
итого выходит уже 3 * M^(1/3) проверок, то есть при М = 1000000 всего 300 проверок на месяц. Недурственно.

Alexandroppolus 03.08.2022 21:17

Ну и конечно, если месяцев совсем мало, можно просто найти их границы двоичным поиском.


Часовой пояс GMT +3, время: 09:59.