簡體   English   中英

在最小堆中查找最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM