Я просто изучаю несколько уроков, которые дал мне мой лектор, и я не могу понять, как используется функция heapRebuild
! Он не изменяет никаких глобальных переменных и не распечатывает ничего, что не возвращает ничего - так должно ли это работать? Он не должен, не так ли?Как эта функция используется?
Если вам сказали heapRebuild
, чтобы сделать новую функцию: removeMac
Вы бы отредактировали heapRebuild
?
public class MaxHeap<T extends Comparable<T>> implements Heap<T>{
private T[] heap;
private int lastIndex;
public T removeMax(){
T rootItem = heap[0];
heap[0] = heap[lastIndex-1];
lastIndex--;
heapRebuild(heap, 0, lastIndex);
return rootItem;
}
protected void heapRebuild(T[ ] items, int root, int size){
int child = 2*root+1;
if(child < size){
int rightChild = child+1;
if ((rightChild < size) &&
(items[rightChild].compareTo(items[child]) > 0)){
child = rightChild;
}
if (items[root].compareTo(items[child]) < 0){
T temp = items[root];
items[root] = items[child];
items[child] = temp;
heapRebuild(items, child, size);}
}
}
}
Что такое removeMac? Как в том, что такое MAC в этом случае – Woot4Moo
Это * методы *, а не * функции *. Java - это язык OO, а не процедурный язык. – BalusC