Hvordan bruger man Max Heap i Java?

Hvordan Bruger Man Max Heap I Java



Programmøren kan nemt hente det maksimale element ved at bruge ' Max Heap ” binært træ. Som i dette træ, ligger det maksimale element altid i træets topknude, som er kendt som ' rod ” node. Desuden tilbyder det effektiv indsættelse og sletning af elementer, mens den bevarer den sorterede rækkefølge. Derudover kan en 'Max Heap' nemt udføre planlagte job baseret på deres prioritet eller andre kriterier.

Denne artikel forklarer følgende indhold:







Hvordan bruger man Max Heap i Java?

en ' Max Heap ” bruges som den underliggende datastruktur til implementering af en prioriteret kø. I prioritetskøen behandles dataene baseret på deres tildelte prioritetsværdi. Det kan også bruges til at sortere dataelementerne i faldende rækkefølge, effektivt.



'Max Heap' kan genereres ved hjælp af to metoder, som er beskrevet langs codec-eksemplet nedenfor:



Metode 1: Brug metoden 'maxHeapify()'.

Det ' maxHeapify() '-metoden genererer en ' Max Heap ” fra en eksisterende samling af elementer ved at transformere datastrukturer. Desuden hjælper denne metode med at ændre det originale array på plads, hvilket reducerer behovet for yderligere hukommelse.





Besøg f.eks. nedenstående kode for at generere en ' Max Heap ” ved hjælp af “maxHeapify()”-metoden:

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

offentlig klasse MaxHeapifyExam {
offentlig statisk tomrum hoved ( Snor [ ] args ) // oprettelse af hoved ( ) metode
{
Liste < Heltal > testsEle = ny ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Original liste: ' + tests ) ;
maxHeapify ( PRØVER ) ;
System.out.println ( 'The Max Heap Generated:' + tests ) ;
}

privat statisk tomrum maxHeapify ( Liste < Heltal > PRØVER ) {
int k = testEle.størrelse ( ) ;
til ( int i = k / 2 - 1 ; jeg > = 0 ; jeg-- ) {
ophobe ( testsEle, k, i ) ;
}
}

privat statisk tomrum heapify ( Liste < Heltal > testsEle, int k, int i ) {
int større = i;
int venstreside = 2 * i + 1 ;
int højreSide = 2 * i + 2 ;
hvis ( venstre side < k && testEle.get ( venstre side ) > testEle.get ( større ) ) {
større = venstreSide;
}
hvis ( højre side < k && testEle.get ( højre side ) > testEle.get ( større ) ) {
større = højreSide;
}
hvis ( større ! = i ) {
Samlinger.bytte ( testsEle, i, større ) ;
ophobe ( testsEle, k, større ) ;
}
}
}



Forklaring af ovenstående kode:

  • Først listen ' PRØVER ' initialiseres med dummy dataelementer i ' hoved() ”-metoden og trykt på konsollen.
  • Derefter sendes 'testEle'-listen til funktionen 'maxHeapify()', og derefter vises den returnerede liste på konsollen.
  • Derefter ' maxHeapify() '-metoden initialiseres, og størrelsen af ​​den angivne liste hentes ved at bruge ' størrelse() ” metode.
  • Brug derefter ' til ”-løkke for at indstille heapstrukturen og beregne positionen af ​​hver node.
  • Brug nu ' heapify() ”-metoden og indstil positionen for “top”, “venstre” og “højre” noder ved at tildele værdier til henholdsvis “større”, “venstre side” og “højre side” variabler.
  • Brug derefter flere ' hvis ' betingede erklæringer for at kontrollere, om ' venstre side ' noden er større end ' højre side ” node og omvendt. I sidste ende bliver den større værdi gemt i ' større ” node.
  • Endelig den nye ' større ' nodeværdi kontrolleres med den allerede gemte værdi i ' større ” node variabel. Og ' bytte rundt() '-funktionen fungerer i overensstemmelse hermed for at indstille den største værdi i ' større ' variabel.

Efter afslutningen af ​​udførelsesfasen:

Snapshottet viser den maksimale heap, der genereres ved hjælp af ' maxHeapify() ” metode i Java.

Metode 2: Brug metoden 'Collections.reverseOrder()'.

Det ' Collections.reverseOrder() ' metode tilbyder en enkel og kortfattet metode til at generere en ' Max Heap ” ved at sortere samlingen i omvendt rækkefølge. Dette tillader kode at genbruge og undgår behovet for at implementere den brugerdefinerede ' ophobe ” logik, som vist i nedenstående kodestykke:

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

offentlig klasse ReverseOrderExample {
offentlig statisk tomrum hoved ( Snor [ ] args ) // oprettelse af hoved ( ) metode
{
Liste < Heltal > testsEle = ny ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Original liste: ' + testsEle ) ;
Samlinger.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'The Max Heap Generated:' + testsEle ) ;
}
}

Forklaring af ovenstående kode:

  • Først skal du importere ' ArrayList ', ' Samlinger ' og ' Liste ” hjælpeprogrammer i Java-filen.
  • Opret derefter en ' Liste ' som hedder ' PRØVER ” og indsæt dummy-elementer i listen.
  • Dernæst ' sortere() ”-metoden bruges til at sortere dataelementerne i stigende rækkefølge og sende listen som en parameter langs ” Collections.reverseOrder() ” metode. Dette gør sorteringen af ​​' PRØVER ” liste i omvendt rækkefølge.

Efter afslutningen af ​​udførelsesfasen:

Snapshottet viser, at 'Max Heap' er genereret og sorteret ved hjælp af 'Collections.reverseOrder()'-metoden.

Konklusion

Ved at oprette en ' Max Heap ”, kan brugerne bruge metoderne “maxHeapify()” og “Collections.reverseOrder()”. De administrerer en samling af elementer på en måde, der giver hurtig adgang til det maksimale element og effektiv vedligeholdelse af en sorteret ordre. Det afhænger udelukkende af de specifikke krav og niveauet af kontrol, der kræves over heap-oprettelsesprocessen.