我只是在學習講師給我的幾節課,我無法理解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 2010-04-25 21:06:46
它是*方法*,而不是*函數*。 Java是OO語言,而不是過程語言。 – BalusC 2010-04-25 21:23:16