Java
 Computer >> コンピューター >  >> プログラミング >> Java

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」関数は、リストから要素を削除するために使用されます。次に、要素が繰り返されて画面に表示されます。


  1. データ構造の最大ヒープからの削除

    ここでは、バイナリ最大ヒープデータ構造から要素を削除する方法を説明します。最初のツリーが次のようになっていると仮定します- 削除アルゴリズム delete(heap, n) − Begin    if heap is empty, then exit    else       item := heap[1]       last := heap[n]       n := n – 1       for

  2. 最大ヒープは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