Вы думаете в правильном направлении, но выполняемые вами операции не гарантируют минимальную кучу в результате. Посмотрите на следующую кучу:
..
11
/ \
19 63 (<-was 13)
.. / \
55 15
.. ..
Представьте, что вы только что обновили ключ с 13 до 63 и хотите восстановить свойство min-heap. Ваш код поменяет местами 55 и 63, потому что 55 <63, но чем 55 будет родительским для 63 и 15 (!) И, следовательно, повредит свойству min-heap. </p>
Функция, которая вам нужна (для восстановления свойства min-heap), называется «heapify». Это не тривиально, но и не очень сложно. Посмотрите его объяснение в этой статье в Википедии о heapsort . Нет ничего плохого в простом чтении / изучении решения, если вы понимаете его, а не просто копируете оно.
Если после этого у вас все еще есть вопросы, задавайте.