Javaの最大ヒープ
最大ヒープは完全な二分木であり、すべてのステップでのルートノードの値は子ノードでの値以上です。
以下は、ライブラリ関数を使用したMaxHeapの実装です。
例
import java.util.*;
public class Demo{
public static void main(String args[]){
PriorityQueue<Integer> my_p_queue = new PriorityQueue<Integer>(Collections.reverseOrder());
my_p_queue.add(43);
my_p_queue.add(56);
my_p_queue.add(99);
System.out.println("The elements in the priority queue are : ");
Iterator my_iter = my_p_queue.iterator();
while (my_iter.hasNext())
System.out.println(my_iter.next());
my_p_queue.poll();
System.out.println("After removing an element using the poll function, the queue elements are :");
Iterator<Integer> my_iter_2 = my_p_queue.iterator();
while (my_iter_2.hasNext())
System.out.println(my_iter_2.next());
Object[] my_arr = my_p_queue.toArray();
System.out.println("The array representation of max heap : ");
for (int i = 0; i < my_arr.length; i++)
System.out.println("Value: " + my_arr[i].toString());
}
} 出力
The elements in the priority queue are : 99 43 56 After removing an element using the poll function, the queue elements are : 56 43 The array representation of max heap : Value: 56 Value: 43
Demoという名前のクラスには、main関数が含まれています。 main関数内で、優先キューのインスタンスが定義され、「add」関数を使用して要素が追加されます。イテレータが定義され、それが
優先キュー内の要素を反復処理するために使用されます。 「poll」関数は、リストから要素を削除するために使用されます。次に、要素が繰り返されて画面に表示されます。
-
データ構造の最大ヒープからの削除
ここでは、バイナリ最大ヒープデータ構造から要素を削除する方法を説明します。最初のツリーが次のようになっていると仮定します- 削除アルゴリズム delete(heap, n) − Begin if heap is empty, then exit else item := heap[1] last := heap[n] n := n – 1 for
-
最大ヒープはPythonですか?
numsと呼ばれる数値のリストがあるとすると、それがmaxheapを表すかどうかを確認する必要があります。これらのルールに従います- nums [i] =nums [2 * i + 1](2 * i + 1が範囲内にある場合) nums [i] =nums [2 * i + 2](2 * i + 2が範囲内にある場合) したがって、入力が[5、3、4、1、2]の場合、出力はTrueになります これを解決するには、次の手順に従います- 0から(numsのサイズ)/ 2の範囲のiの場合、do =nums [2 * i + 1]が真でない場合、 Falseを返す if i