Сообщение от Aetae
|
Если даты уже отсортированы
|
тогда можно ещё прикинуть, сколько примерно записей бывает за месяц, и в цикле прибавлять не i++, а i += k. Если набижали на новый месяц, то ищем начало нового месяца, идя от прошлой записи и прибавляя 1 (или идя назад).
Если в среднем
M сообщений за месяц, то взяв k = sqrt(M), получим O(N / sqrt(M)) вместо (O(N))
при маленьких М, конечно, толку от этого не будет.. Хотя надо заметить, что при малых M и записей всего очень мало (потому как за 100 лет было всего 1200 месяцев, и оптимизировать нечего). Т.е. М, судя по всему, здоровенное.