У кучи появился способ создать её из уже готового массива

12.02.2026

У кучи появился способ создать её из данных, уже расположенных в нужном порядке, без затрат на перестроение. Пока помечен как нестабильный.

Какая была проблема

Куча хранит данные в массиве, где на вершине лежит наибольший элемент, а остальные удовлетворяют условию на каждом шаге вверх. Взять произвольный массив и «сделать из него кучу» — значит перестроить его.

Если данные уже соответствуют этому порядку, перестроение бессмысленно. И это не экзотика: данные, полученные отсортированным перебором, или уже обработанные очередью с приоритетом, часто уже в нужном порядке.

Что даёт метод

Создание за постоянное время без перестроения. Ответственность за порядок на вызывающем коде — если данные ему не соответствуют, поведение кучи будет неверным, и это не обнаружится сразу.

Тем же обоснованием добавлен доступ к внутреннему буферу в виде среза — чтобы данные можно было прочитать и изменить, минуя проверки поддержания порядка.

Оригинал

Implementation for rust-lang/rust#152500; доступ к буферу — rust-lang/rust#154011

Упоминаний: 1 · Просмотров: 3