Я создал класс для управления Приоритетной очередью с параметром ArrayList. Мне нужно сделать Max Heap, поэтому, если я сделаю следующую вставку: 16, 9, 7, 8, 4, 14, 1, 3, 2, 10, мне нужно получить ArrayList с этими элементами в этой позиции: {16 , 9, 14, 7, 4, 8, 10, 3, 2, 1}. Проблема в том, что мой метод вставки выглядит так, как будто не упорядочивает элементы:
public void insert(T elem) {
int i = queue.size();
int parentIndex = (int) Math.floor((i - 1) / 2);
while (i > 0 && elem.compareTo(queue.get(parentIndex)) == 1) {
queue.set(i, queue.get(parentIndex));
i = parentIndex;
parentIndex = (int) Math.floor((i - 1) / 2);
}
queue.add(i, elem);
}
Пример: вставка (16), вставка (14), вставка (9). Ожидается массив: {16,9,14}. Результат: {16,14,9}.