В настоящее время пытаюсь понять Min Heap с помощью Repl здесь: https://repl.it/@Stylebender/Minheap#index.js
Минимальная куча имеет емкость 5.
Как только я вставляю 6-й элемент (50), мы меняем местами элементы с индексом 0 и индексом 5 и извлекаем наименьший элемент из кучи, оставляя кучу как:
[ 50, 10, 20, 40, 30]
Мой конкретный запрос касается строк 39-40.
Как вы можете видеть из журнала консоли, при первом вызове методаrickeDown() min (0), представляющий индексную позицию 50, становится leftChild и в конечном итоге меняет местами позиции с индексом 1 со следующим результатом:
[ 50, 10, 20, 40, 30]
Однако при втором вызове методаrickleDown() 50 с индексом 1 занимает позицию rightChild и меняет местами позиции с индексом 4, чтобы сформировать окончательную кучу, как показано ниже:
[ 10, 30, 20, 40, 50]
Может быть, я просто что-то упускаю, но я не уверен, почему min решил стать leftChild при первом запуске и rightChild при втором запуске, так как не будет 50, так как самый большой элемент в куче min каждый раз удовлетворяет обоим циклам For. вызывается метод?