Есть много проблем с кодом, который вы разместили, некоторые из которых включают в себя:
- Что касается вашей конкретной проблемы, я думаю, вам нужно изменить строку в heap :: insert () на "int POS = count-1;" , чтобы правильно начать итерацию с конца массив.
- Вам необходимо рассмотреть случай добавления элемента в пустой массив и то, что происходит в коде сортировки.
- Ваш конструктор позволяет кому-то создать кучу, которая будет переполнять массив фиксированного размера, например heap (1000) . Кроме того, элемент Arr не инициализирован, что означает, что он имеет неопределенные данные для любого значения, но heap (0) . В этом случае ваш конструктор не должен принимать никаких параметров, и счетчик должен быть просто инициализирован равным 0.
- Назначение кода сбивает с толку. Это куча, отсортированный массив, попытка приблизить кучу с массивом, ничего из вышеперечисленного? Если вы просто пытаетесь реализовать отсортированный массив фиксированного размера, то я считаю, что ваш код сортировки в insert () не будет работать (например, рассмотрите возможность добавления 100 в кучу, содержащую [1,2,3]).
Существуют и другие, более простые вещи, неправильные (например, не использовать контейнеры STL, открытый класс, передача неконстантных параметров, «использование std» и т. Д.), Но я предполагаю, что вы просто экспериментируете / играет здесь.