[英]Finding max in min heap
我正在為考試做准備,在我所瀏覽的工作表中,它要求為存儲整數的min堆編寫一個large()方法。
public class Heap {
private int[] arr = new int[100];
private int numElts = 0;
public int largest(){
}
}
最大大小為100個元素,並且newElt跟蹤堆中存儲的當前元素數。
我正在考慮做類似的事情:
int[] newArr = Collections.sort(arr);
return newArr[newElt];
但是那會改變原來的堆。 我可以對其做一個深拷貝,但是它說沒有必要檢查所有堆元素。
那么,有誰能提出一種無需考慮每個要素的方法呢? 謝謝,
如果您的結構按堆順序排列,如果它是-max堆,則max元素將只是arr[0]
。 但是,由於它是一個最小堆,因此您所知道的就是max元素是一個葉節點。
因此,您不需要測試每個元素。 但是您將需要查看最多一半的元素(對於一棵二叉樹,葉子的數量在大小的1到一半之間加一個,包括兩個賬戶在內)。
您可以通過了解二叉堆(您描述的)是一種特殊的平衡二叉樹來快捷地查看葉節點,通過少量的計算就可以告訴您兩組葉節點可能在哪里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.