Kuinka Max Heapiä käytetään Javassa?

Kuinka Max Heapia Kaytetaan Javassa



Ohjelmoija voi helposti hakea maksimielementin käyttämällä ' Max Heap ”binääripuu. Kuten tässä puussa, maksimielementti sijaitsee aina puun yläsolmussa, joka tunnetaan nimellä ' juuri ”solmu. Lisäksi se tarjoaa tehokkaan elementtien lisäämisen ja poistamisen säilyttäen samalla järjestyksen. Lisäksi 'Max Heap' voi helposti suorittaa ajoitettuja töitä prioriteettinsa tai muiden kriteerien perusteella.

Tämä artikkeli selittää seuraavan sisällön:







Kuinka Max Heapiä käytetään Javassa?

A ' Max Heap ” käytetään taustalla olevana tietorakenteena prioriteettijonon toteuttamisessa. Prioriteettijonossa tiedot käsitellään niille annetun prioriteettiarvon perusteella. Sen avulla voidaan myös lajitella tietoelementit tehokkaasti laskevaan järjestykseen.



'Max Heap' voidaan luoda kahdella menetelmällä, jotka kuvataan alla olevassa koodekkiesimerkissä:



Tapa 1: Käytä 'maxHeapify()' -menetelmää

' maxHeapify() ' menetelmä luo ' Max Heap ” olemassa olevasta elementtikokoelmasta muuntamalla tietorakenteita. Lisäksi tämä menetelmä auttaa muokkaamaan alkuperäistä taulukkoa paikalleen vähentäen lisämuistin tarvetta.





Siirry esimerkiksi alla olevaan koodiin luodaksesi ' Max Heap ' käyttämällä 'maxHeapify()'-menetelmää:

tuonti java.util.ArrayList;
tuonti java.util.Collections;
tuonti java.util.List;

julkinen luokka MaxHeapifyExam {
julkinen static void main ( merkkijono [ ] args ) // pääosan luominen ( ) menetelmä
{
Lista < Kokonaisluku > testsEle = uusi ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Alkuperäinen lista:' + testit ) ;
maxHeapify ( TESTIT ) ;
System.out.println ( 'Max Heap Generation:' + testit ) ;
}

yksityinen staattinen void maxHeapify ( Lista < Kokonaisluku > TESTIT ) {
int k = testiEle.size ( ) ;
varten ( int i = k / 2 - 1 ; i > = 0 ; minä-- ) {
kasaa ( testitEle, k, i ) ;
}
}

yksityinen staattinen tyhjyys kasaa ( Lista < Kokonaisluku > testitEle, int k, int i ) {
int suurempi = i;
int leftSide = 2 * minä + 1 ;
int rightSide = 2 * minä + 2 ;
jos ( vasen puoli < k && testEle.get ( vasen puoli ) > testEle.get ( suurempi ) ) {
suurempi = vasen puoli;
}
jos ( oikea puoli < k && testEle.get ( oikea puoli ) > testEle.get ( suurempi ) ) {
suurempi = oikea puoli;
}
jos ( suurempi ! = i ) {
Collections.swap ( testitEle, i, suurempi ) ;
kasaa ( testitEle, k, suurempi ) ;
}
}
}



Selitys yllä olevalle koodille:

  • Ensinnäkin luettelo ' TESTIT ' on alustettu valedataelementeillä ' pää() ” -menetelmällä ja painettu konsoliin.
  • Seuraavaksi 'testEle'-luettelo välitetään 'maxHeapify()'-funktiolle, ja sitten palautettu luettelo näytetään konsolissa.
  • Sitten ' maxHeapify() ' -menetelmä alustetaan ja tarjotun luettelon koko noudetaan käyttämällä ' koko() ”menetelmä.
  • Käytä seuraavaksi ' varten ” -silmukkaa asettaaksesi kasan rakenteen ja laskeaksesi kunkin solmun sijainnin.
  • Käytä nyt ' kasata () ' -menetelmää ja aseta 'ylä', 'vasen' ja 'oikea' solmujen sijainti määrittämällä arvot 'greater', 'leftSide' ja 'rightSide' muuttujiin, vastaavasti.
  • Käytä sen jälkeen useita ' jos ' ehdollisia lausekkeita tarkistaaksesi, onko ' vasen puoli ' solmu on suurempi kuin ' oikea puoli ”solmu ja päinvastoin. Lopulta suurempi arvo tallennetaan ' suurempi ”solmu.
  • Lopuksi uusi ' suurempi ' solmun arvo tarkistetaan jo tallennetulla arvolla ' suurempi ” solmumuuttuja. Ja ' vaihtaa() ' -toiminto toimii vastaavasti asettaakseen suurimman arvon ' suurempi ”muuttuja.

Toteutusvaiheen päätyttyä:

Tilannekuva näyttää, että enimmäiskeko luodaan käyttämällä ' maxHeapify() ”menetelmä Javassa.

Tapa 2: Käytä 'Collections.reverseOrder()' -menetelmää

' Collections.reverseOrder() ' -menetelmä tarjoaa yksinkertaisen ja ytimekkään tavan luoda ' Max Heap ” lajittelemalla kokoelma käänteisessä järjestyksessä. Tämä mahdollistaa koodin uudelleenkäytön ja välttää mukautetun ' kasaa ”logiikka, kuten alla oleva koodinpätkä näkyy:

tuonti java.util.ArrayList;
tuonti java.util.Collections;
tuonti java.util.List;

julkinen luokka ReverseOrderExample {
julkinen static void main ( merkkijono [ ] args ) // pääosan luominen ( ) menetelmä
{
Lista < Kokonaisluku > testsEle = uusi ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Alkuperäinen lista:' + testit ) ;
Collections.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Max Heap Generation:' + testit ) ;
}
}

Selitys yllä olevalle koodille:

  • Tuo ensin ' ArrayList ”, “ Kokoelmat ' ja ' Lista ”-apuohjelmat Java-tiedostossa.
  • Luo sitten ' Lista ”nimeltään” TESTIT ” ja lisää luetteloon valeelementtejä.
  • Seuraavaksi ' järjestellä() ' -menetelmää käytetään tietoelementtien lajitteluun nousevaan järjestykseen ja luettelon välittämiseen parametrina ' Collections.reverseOrder() ”menetelmä. Tämä tekee lajittelusta ' TESTIT ” luettelo käänteisessä järjestyksessä.

Toteutusvaiheen päätyttyä:

Tilannekuva osoittaa, että 'Max Heap' luodaan ja lajitellaan 'Collections.reverseOrder()'-menetelmällä.

Johtopäätös

Luomalla ' Max Heap ”, käyttäjät voivat käyttää 'maxHeapify()'- ja 'Collections.reverseOrder()'-menetelmiä. He hallitsevat elementtikokoelmaa tavalla, joka mahdollistaa nopean pääsyn maksimielementtiin ja tehokkaan järjestyksen ylläpitämisen. Se riippuu yksinomaan keon luontiprosessin erityisvaatimuksista ja tarvittavasta hallinnan tasosta.