LINUX.ORG.RU

История изменений

Исправление Norgat, (текущая версия) :

Понимаешь какой ньюанс, ты не сделаешь алгоритма который будет требовать меньше операций сравнения чем у тебя операций пересчёта иск. Потому что на каждый пересчёт иск тебе нужен один инсерт в кучу (в старую, в новую - не важно, там будет сравнение для сортировки элементов в любом случае + операции смены адресов). Минимальная стоимость инсерта и поиска минимума (инвертируем числа и вместо максимума ищем минимум) в куче - O(1) и O(1), это, например, фиббоначиева куча.

Внезапно, то, что предложил я это ровно столько же операций сравнения. Вот только в моем варианте ёмкостная сложность O(1). А с кучей - O(n) и может плавать.

Поэтому куча это далеко не идеально тут.

Исходная версия Norgat, :

Понимаешь какой ньюанс, ты не сделаешь алгоритма который будет требовать меньше операций сравнения чем у тебя операций пересчёта иск. Потому что на каждый пересчёт иск тебе нужен один инсерт в кучу (в старую, в новую - не важно, там будет сравнение для сортировки элементов в любом случае + операции смены адресов). Минимальная стоимость инсерта и поиска в куче - O(1) и O(1), это, например, фиббоначиева куча.

Внезапно, то, что предложил я это ровно столько же операций сравнения. Вот только в моем варианте ёмкостная сложность O(1). А с кучей - O(n) и может плавать.

Поэтому куча это далеко не идеально тут.