Kuidas Javas Max Heap kasutada?

Kuidas Javas Max Heap Kasutada



Programmeerija saab hõlpsalt hankida maksimaalse elemendi, kasutades ' Max Heap ” kahendpuu. Nagu selles puus, asub maksimaalne element alati puu ülemises sõlmes, mida nimetatakse ' juur ” sõlm. Lisaks pakub see elementide tõhusat sisestamist ja kustutamist, säilitades samal ajal sorteeritud järjekorra. Lisaks saab 'Max Heap' hõlpsasti täita ajastatud töid nende prioriteedi või muude kriteeriumide alusel.

See artikkel selgitab järgmist sisu:







Kuidas Javas Max Heap kasutada?

A ' Max Heap ” kasutatakse prioriteetse järjekorra rakendamise aluseks oleva andmestruktuurina. Prioriteedijärjekorras töödeldakse andmeid neile määratud prioriteediväärtuse alusel. Seda saab kasutada ka andmeelementide tõhusaks sortimiseks kahanevas järjekorras.



'Max Heap' saab luua kahe meetodiga, mida kirjeldatakse allpool toodud koodeki näites:



1. meetod: kasutage meetodit 'maxHeapify()'.

' maxHeapify() ' meetod genereerib ' Max Heap ” olemasolevast elementide kogumist andmestruktuure teisendades. Lisaks aitab see meetod algset massiivi paigas muuta, vähendades vajadust lisamälu järele.





Näiteks külastage allolevat koodi, et luua ' Max Heap ' kasutades 'maxHeapify()' meetodit:

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

avalik klass MaxHeapifyExam {
avalik static void main ( String [ ] args ) // peamise loomine ( ) meetod
{
Nimekiri < Täisarv > testsEle = uus ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Algne nimekiri:' + testid ) ;
maxHeapify ( TESTID ) ;
System.out.println ( 'Loodud Max Heap:' + testid ) ;
}

privaatne staatiline tühimik maxHeapify ( Nimekiri < Täisarv > TESTID ) {
int k = testEle.size ( ) ;
jaoks ( int i = k / 2 - 1 ; i > = 0 ; mina-- ) {
kuhjata ( testidEle, k, i ) ;
}
}

privaatne staatiline tühimik kuhjaga ( Nimekiri < Täisarv > testidEle, int k, int i ) {
int suurem = i;
int vasakpool = 2 * mina + 1 ;
int parempool = 2 * mina + 2 ;
kui ( vasak pool < k && testEle.get ( vasak pool ) > testEle.get ( suurem ) ) {
suurem = vasakpoolne;
}
kui ( parem pool < k && testEle.get ( parem pool ) > testEle.get ( suurem ) ) {
suurem = parempoolne;
}
kui ( suurem ! = i ) {
Collections.swap ( testidEle, i, suurem ) ;
kuhjata ( testidEle, k, suurem ) ;
}
}
}



Ülaltoodud koodi selgitus:

  • Esiteks nimekiri ' TESTID ' initsialiseeritakse valeandmete elementidega ' peamine () ” meetodil ja prinditakse konsoolile.
  • Järgmisena edastatakse loend 'testEle' funktsioonile 'maxHeapify()' ja seejärel kuvatakse konsoolil tagastatud loend.
  • Siis ' maxHeapify() ” meetod initsialiseeritakse ja pakutava loendi suurus leitakse, kasutades „ suurus () ” meetod.
  • Järgmisena kasutage ' jaoks ” silmus, et määrata kuhja struktuur ja arvutada iga sõlme asukoht.
  • Nüüd kasutage ' kuhjaga () ” meetodit ja määrake sõlmede 'ülemine', 'vasakpoolne' ja 'parempoolne' asukoht, määrates väärtused vastavalt muutujatele 'greater', 'leftSide' ja 'rightSide'.
  • Pärast seda kasutage mitut ' kui ' tingimuslauseid, et kontrollida, kas ' vasak pool ' sõlm on suurem kui ' parem pool ” sõlme ja vastupidi. Lõpuks salvestatakse suurem väärtus kausta ' suurem ” sõlm.
  • Lõpuks uus ' suurem ' sõlme väärtust kontrollitakse juba salvestatud väärtusega ' suurem ” sõlme muutuja. Ja ' vahetus () funktsioon töötab vastavalt, et määrata suurim väärtus suurem ” muutuja.

Pärast täitmisfaasi lõppu:

Hetktõmmis näitab, et maksimaalne hunnik luuakse ' maxHeapify() ” meetod Javas.

2. meetod: kasutage meetodit 'Collections.reverseOrder()'.

' Collections.reverseOrder() ” meetod pakub lihtsat ja ülevaatlikku meetodit „ Max Heap ” sorteerides kogu vastupidises järjekorras. See võimaldab koodi uuesti kasutada ja väldib vajadust rakendada kohandatud ' kuhjata ” loogika, nagu on näidatud allolevas koodilõigul:

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

avalik klass ReverseOrderExample {
avalik static void main ( String [ ] args ) // peamise loomine ( ) meetod
{
Nimekiri < Täisarv > testsEle = uus ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Algne nimekiri:' + testidEle ) ;
Kollektsioonid.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Loodud Max Heap:' + testidEle ) ;
}
}

Ülaltoodud koodi selgitus:

  • Esiteks importige ' ArrayList ”, “ Kollektsioonid ” ja „ Nimekiri ” utiliidid Java-failis.
  • Seejärel looge ' Nimekiri 'nimega' TESTID ” ja sisestage loendisse näivelemendid.
  • Järgmiseks ' sorteeri() ' meetodit kasutatakse andmeelementide sortimiseks kasvavas järjekorras ja loendi edastamiseks parameetrina mööda ' Collections.reverseOrder() ” meetod. See muudab ' TESTID ” nimekiri vastupidises järjekorras.

Pärast täitmisfaasi lõppu:

Hetktõmmis näitab, et 'Max Heap' genereeritakse ja sorteeritakse meetodiga 'Collections.reverseOrder()'.

Järeldus

luues ' Max Heap ”, saavad kasutajad kasutada meetodeid „maxHeapify()” ja „Collections.reverseOrder()”. Nad haldavad elementide kogumit viisil, mis võimaldab kiiret juurdepääsu maksimaalsele elemendile ja tõhusalt sorteeritud järjestuse säilitamist. See sõltub ainult konkreetsetest nõuetest ja hunniku loomise protsessi kontrollimise tasemest.