Я пытаюсь извлечь минимум из двоичной кучи, но он не работает. Вот мой код BubbleDown:
void heapBubbleDown(Heap * const heap, int idx) {
int min;
while(RIGHT(idx) < heap->count) {
min = LEFT(idx);
if(RIGHT(idx) < heap->count) {
if(heap->items[LEFT(idx)] > heap->items[RIGHT(idx)]) {
min = RIGHT(idx);
}
}
heapSwapValue(&(heap->items[idx]), &(heap->items[min]));
idx = min;
}
}
Похоже, что меняются только несколько цифр, но не все, я не могу понять почему Я пытался перекодировать это по-другому и уже много раз ...
Что я делаю не так?