Wie verwende ich Max Heap in Java?

Wie Verwende Ich Max Heap In Java



Der Programmierer kann das maximale Element leicht abrufen, indem er „ Max Heap „Binärbaum. Wie in diesem Baum befindet sich das maximale Element immer am obersten Knoten des Baums, der als „ Wurzel ”Knoten. Darüber hinaus ermöglicht es das effiziente Einfügen und Löschen von Elementen unter Beibehaltung der sortierten Reihenfolge. Darüber hinaus kann ein „Max Heap“ geplante Aufgaben problemlos anhand ihrer Priorität oder anderer Kriterien ausführen.

In diesem Artikel werden folgende Inhalte erläutert:







Wie verwende ich Max Heap in Java?

A ' Max Heap „wird als zugrunde liegende Datenstruktur für die Implementierung einer Prioritätswarteschlange verwendet. In der Prioritätswarteschlange werden die Daten basierend auf ihrem zugewiesenen Prioritätswert verarbeitet. Es kann auch verwendet werden, um die Datenelemente effizient in absteigender Reihenfolge zu sortieren.



Der „Max Heap“ kann mit zwei Methoden generiert werden, die anhand des folgenden Codec-Beispiels beschrieben werden:



Methode 1: Verwenden Sie die Methode „maxHeapify()“.

Der ' maxHeapify() ”-Methode generiert ein „ Max Heap ” aus einer vorhandenen Sammlung von Elementen durch Transformation von Datenstrukturen. Darüber hinaus hilft diese Methode dabei, das ursprüngliche Array an Ort und Stelle zu ändern, wodurch der Bedarf an zusätzlichem Speicher verringert wird.





Besuchen Sie beispielsweise den folgenden Code, um ein „ Max Heap ” mit der Methode „maxHeapify()“:

import java.util.ArrayList;
java.util.Collections importieren;
java.util.List importieren;

öffentliche Klasse MaxHeapifyExam {
Public static void Main ( Zeichenfolge [ ] args ) // Erstellung von Main ( ) Methode
{
Aufführen < Ganze Zahl > testsEle = neue ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( „Ursprüngliche Liste:“ + Tests ) ;
maxHeapify ( TESTS ) ;
System.out.println ( „Der maximal generierte Heap:“ + Tests ) ;
}

private statische Leere maxHeapify ( Aufführen < Ganze Zahl > TESTS ) {
int k = testEle.size ( ) ;
für ( int i = k / 2 - 1 ; ich > = 0 ; ich-- ) {
häufen ( TestsEle, k, i ) ;
}
}

private statische Leere aufhäufen ( Aufführen < Ganze Zahl > testEle, int k, int i ) {
int größer = i;
int leftSide = 2 * ich + 1 ;
int rightSide = 2 * ich + 2 ;
Wenn ( linke Seite < k && testEle.get ( linke Seite ) > testEle.get ( größer ) ) {
größer = leftSide;
}
Wenn ( rechte Seite < k && testEle.get ( rechte Seite ) > testEle.get ( größer ) ) {
größer = rechte Seite;
}
Wenn ( größer ! = ich ) {
Sammlungen.swap ( TestsEle, ich, größer ) ;
häufen ( TestsEle, k, größer ) ;
}
}
}



Erklärung des obigen Codes:

  • Zuerst die Liste „ TESTS ” wird mit Dummy-Datenelementen im „ initialisiert hauptsächlich() ”-Methode und auf der Konsole gedruckt.
  • Als nächstes wird die „testEle“-Liste an die Funktion „maxHeapify()“ übergeben und dann wird die zurückgegebene Liste auf der Konsole angezeigt.
  • Dann ist die ' maxHeapify() Die Methode wird initialisiert und die Größe der bereitgestellten Liste wird mithilfe der Methode „ abgerufen. Größe() ' Methode.
  • Als nächstes verwenden Sie die „ für ”-Schleife, um die Heap-Struktur festzulegen und die Position jedes Knotens zu berechnen.
  • Benutzen Sie nun die „ heapify() ”-Methode und legen Sie die Position für die Knoten „oben“, „links“ und „rechts“ fest, indem Sie den Variablen „greater“, „leftSide“ bzw. „rightSide“ Werte zuweisen.
  • Nutzen Sie danach mehrere „ Wenn bedingte Anweisungen, um zu überprüfen, ob die „ linke Seite „Knoten ist größer als der „ rechte Seite ” Knoten und umgekehrt. Am Ende wird der größere Wert im „ größer ”Knoten.
  • Schließlich ist das neue „ größer Der Knotenwert wird mit dem bereits gespeicherten Wert im Knoten „ überprüft. größer ” Knotenvariable. Und das ' Tausch() Die Funktion arbeitet entsprechend, um den größten Wert im „ größer ” variabel.

Nach Ende der Ausführungsphase:

Der Snapshot zeigt, dass der maximale Heap mit dem „ maxHeapify() ”-Methode in Java.

Methode 2: Verwenden Sie die Methode „Collections.reverseOrder()“.

Der ' Collections.reverseOrder() Die Methode bietet eine einfache und prägnante Methode zum Generieren einer „ Max Heap ” indem Sie die Sammlung in umgekehrter Reihenfolge sortieren. Dies ermöglicht die Wiederverwendung von Code und vermeidet die Notwendigkeit, den benutzerdefinierten Code zu implementieren. häufen ”-Logik, wie im folgenden Codeausschnitt gezeigt:

import java.util.ArrayList;
java.util.Collections importieren;
java.util.List importieren;

öffentliche Klasse ReverseOrderExample {
Public static void Main ( Zeichenfolge [ ] args ) // Erstellung von Main ( ) Methode
{
Aufführen < Ganze Zahl > testsEle = neue ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( „Ursprüngliche Liste:“ + TestsEle ) ;
Sammlungen.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( „Der maximal generierte Heap:“ + TestsEle ) ;
}
}

Erklärung des obigen Codes:

  • Importieren Sie zunächst „ Anordnungsliste “, „ Sammlungen ' Und ' Aufführen ”Dienstprogramme in der Java-Datei.
  • Erstellen Sie dann ein „ Aufführen ' genannt ' TESTS ” und fügen Sie Dummy-Elemente in die Liste ein.
  • Als nächstes wird das „ Sortieren() Die Methode wird verwendet, um die Datenelemente in aufsteigender Reihenfolge zu sortieren und die Liste als Parameter entlang der „ Collections.reverseOrder() ' Methode. Dadurch wird die Sortierung der „ TESTS ”-Liste in umgekehrter Reihenfolge.

Nach Ende der Ausführungsphase:

Der Schnappschuss zeigt, dass „Max Heap“ mithilfe der Methode „Collections.reverseOrder()“ generiert und sortiert wird.

Abschluss

Durch die Erstellung eines „ Max Heap “ können die Benutzer die Methoden „maxHeapify()“ und „Collections.reverseOrder()“ verwenden. Sie verwalten eine Sammlung von Elementen auf eine Weise, die einen schnellen Zugriff auf das maximale Element und eine effiziente Aufrechterhaltung einer sortierten Reihenfolge ermöglicht. Dies hängt ausschließlich von den spezifischen Anforderungen und dem erforderlichen Maß an Kontrolle über den Heap-Erstellungsprozess ab.