Hvordan bruke Max Heap i Java?

Hvordan Bruke Max Heap I Java



Programmereren kan enkelt hente det maksimale elementet ved å bruke ' Max Heap ” binært tre. Som i dette treet, ligger det maksimale elementet alltid i toppnoden i treet som er kjent som ' rot ' node. Dessuten tilbyr den effektiv innsetting og sletting av elementer samtidig som den opprettholder sortert rekkefølge. I tillegg kan en 'Max Heap' enkelt utføre planlagte jobber basert på deres prioritet eller andre kriterier.

Denne artikkelen forklarer følgende innhold:







Hvordan bruke Max Heap i Java?

en ' Max Heap ” brukes som den underliggende datastrukturen for å implementere en prioritert kø. I prioritetskøen behandles dataene basert på deres tildelte prioritetsverdi. Den kan også brukes til å sortere dataelementene i synkende rekkefølge, effektivt.



'Max Heap' kan genereres ved hjelp av to metoder som er beskrevet langs kodekeksemplet nedenfor:



Metode 1: Bruk 'maxHeapify()'-metoden

« maxHeapify() '-metoden genererer en ' Max Heap ” fra en eksisterende samling av elementer ved å transformere datastrukturer. Dessuten hjelper denne metoden med å modifisere den originale matrisen på plass, noe som reduserer behovet for ekstra minne.





Gå for eksempel til koden nedenfor for å generere en ' Max Heap ' ved å bruke 'maxHeapify()'-metoden:

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

offentlig klasse MaxHeapifyExam {
offentlig statisk tomrom hoved ( String [ ] args ) // opprettelse av hoved ( ) metode
{
Liste < Heltall > 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: ' + tester ) ;
maxHeapify ( TESTER ) ;
System.out.println ( 'The Max Heap Generated:' + tester ) ;
}

privat statisk tomrom maxHeapify ( Liste < Heltall > TESTER ) {
int k = testEle.størrelse ( ) ;
til ( int i = k / 2 - 1 ; Jeg > = 0 ; Jeg-- ) {
heapify ( testerEle, k, i ) ;
}
}

privat statisk tomrom heapify ( Liste < Heltall > testsEle, int k, int i ) {
int større = i;
int venstreside = 2 * jeg + 1 ;
int høyreSide = 2 * jeg + 2 ;
hvis ( venstre side < k && testEle.get ( venstre side ) > testEle.get ( større ) ) {
større = venstreside;
}
hvis ( høyre side < k && testEle.get ( høyre side ) > testEle.get ( større ) ) {
større = høyreSide;
}
hvis ( større ! = i ) {
Samlinger.bytte ( testsEle, jeg, større ) ;
heapify ( testerEle, k, større ) ;
}
}
}



Forklaring av koden ovenfor:

  • Først listen ' TESTER ' er initialisert med dummy-dataelementer i ' hoved() ”-metoden og trykt på konsollen.
  • Deretter sendes 'testEle'-listen til 'maxHeapify()'-funksjonen, og deretter vises den returnerte listen på konsollen.
  • Og så ' maxHeapify() '-metoden initialiseres og størrelsen på den angitte listen hentes ved å bruke ' størrelse() 'metoden.
  • Deretter bruker du ' til ”-løkke for å angi haugstrukturen og beregne posisjonen til hver node.
  • Bruk nå ' heapify() ”-metoden og angi posisjonen for “topp”, “venstre” og “høyre” noder ved å tilordne verdier til henholdsvis “større”, “venstreside” og “høyreside” variabler.
  • Etter det, bruk flere ' hvis ' betingede uttalelser for å sjekke om ' venstre side '-noden er større enn ' høyre side ” node og omvendt. Til slutt blir den større verdien lagret i ' større ' node.
  • Til slutt, den nye ' større ' nodeverdien kontrolleres med den allerede lagrede verdien i ' større ” nodevariabel. Og ' bytte() '-funksjonen fungerer deretter for å angi den største verdien i ' større variabel.

Etter slutten av utførelsesfasen:

Øyeblikksbildet viser den maksimale haugen som genereres ved hjelp av ' maxHeapify() '-metoden i Java.

Metode 2: Bruk 'Collections.reverseOrder()'-metoden

« Collections.reverseOrder() '-metoden tilbyr en enkel og konsis metode for å generere en ' Max Heap ” ved å sortere samlingen i omvendt rekkefølge. Dette lar kode gjenbrukes og unngår behovet for å implementere den tilpassede ' heapify ' logikk, som vist i kodebiten nedenfor:

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

offentlig klasse ReverseOrderExample {
offentlig statisk tomrom hoved ( String [ ] args ) // opprettelse av hoved ( ) metode
{
Liste < Heltall > 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: ' + tester ) ;
Samlinger.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'The Max Heap Generated:' + tester ) ;
}
}

Forklaring av koden ovenfor:

  • Først importerer du ' ArrayList ', ' Samlinger ' og ' Liste '-verktøy i Java-filen.
  • Deretter oppretter du en ' Liste 'navngitt' TESTER ” og sett inn dummy-elementer i listen.
  • Deretter ' sortere() '-metoden brukes til å sortere dataelementene i stigende rekkefølge og sende listen som en parameter langs ' Collections.reverseOrder() 'metoden. Dette gjør sorteringen av ' TESTER ” liste i omvendt rekkefølge.

Etter slutten av utførelsesfasen:

Øyeblikksbildet viser at 'Max Heap' er generert og sortert ved hjelp av 'Collections.reverseOrder()'-metoden.

Konklusjon

Ved å lage en ' Max Heap ”, kan brukerne bruke metodene “maxHeapify()” og “Collections.reverseOrder()”. De administrerer en samling av elementer på en måte som gir rask tilgang til det maksimale elementet og effektivt vedlikehold av en sortert ordre. Det avhenger utelukkende av de spesifikke kravene og nivået av kontroll som trengs over haugopprettingsprosessen.