Kako uporabljati Max Heap v Javi?

Kako Uporabljati Max Heap V Javi



Programer lahko enostavno pridobi največji element z uporabo ' Max Heap ” binarno drevo. Tako kot v tem drevesu se največji element vedno nahaja na zgornjem vozlišču drevesa, ki je znano kot ' korenina ” vozlišče. Poleg tega ponuja učinkovito vstavljanje in brisanje elementov ob ohranjanju razvrščenega vrstnega reda. Poleg tega lahko 'Max Heap' enostavno izvaja načrtovana opravila na podlagi njihove prioritete ali drugih meril.

Ta članek pojasnjuje naslednjo vsebino:







Kako uporabljati Max Heap v Javi?

A “ Max Heap ” se uporablja kot temeljna podatkovna struktura za izvajanje prednostne čakalne vrste. V prednostni čakalni vrsti se podatki obdelujejo glede na dodeljeno prednostno vrednost. Uporablja se lahko tudi za učinkovito razvrščanje podatkovnih elementov v padajočem vrstnem redu.



»Največjo kopico« je mogoče ustvariti z uporabo dveh metod, ki sta opisani ob spodnjem primeru kodeka:



1. način: uporabite metodo »maxHeapify()«.

' maxHeapify() ' metoda ustvari ' Max Heap ” iz obstoječe zbirke elementov s preoblikovanjem podatkovnih struktur. Poleg tega ta metoda pomaga pri spreminjanju izvirne matrike na mestu, kar zmanjša potrebo po dodatnem pomnilniku.





Na primer, obiščite spodnjo kodo, da ustvarite » Max Heap « z uporabo metode »maxHeapify()«:

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

javni razred MaxHeapifyExam {
javni statični void main ( Vrvica [ ] args ) // ustvarjanje glavnega ( ) metoda
{
Seznam < Celo število > testsEle = nov ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Izvirni seznam: ' + testi ) ;
maxHeapify ( TESTI ) ;
System.out.println ( 'Največja ustvarjena kopica: ' + testi ) ;
}

zasebna statična praznina maxHeapify ( Seznam < Celo število > TESTI ) {
int k = testEle.size ( ) ;
za ( int i = k / 2 - 1 ; jaz > = 0 ; jaz-- ) {
heapify ( testiEle, k, i ) ;
}
}

zasebna statična praznina heapify ( Seznam < Celo število > testiEle, int k, int i ) {
int večje = i;
int leftSide = 2 * jaz + 1 ;
int desna stran = 2 * jaz + 2 ;
če ( leva stran < k && testEle.get ( leva stran ) > testEle.get ( večji ) ) {
večja = leva stran;
}
če ( desna stran < k && testEle.get ( desna stran ) > testEle.get ( večji ) ) {
večja = desna stran;
}
če ( večji ! = i ) {
Zbirke.swap ( testiEle, i, večji ) ;
heapify ( testiEle, k, večji ) ;
}
}
}



Razlaga zgornje kode:

  • Najprej seznam ' TESTI « se inicializira z navideznimi podatkovnimi elementi v » glavni () ” in natisnjena na konzoli.
  • Nato se seznam »testEle« posreduje funkciji »maxHeapify()«, nato pa se vrnjeni seznam prikaže na konzoli.
  • Potem, ' maxHeapify() ' se inicializira in velikost podanega seznama se pridobi z uporabo ' velikost () ” metoda.
  • Nato uporabite » za ” zanko za nastavitev strukture kopice in izračun položaja vsakega vozlišča.
  • Zdaj uporabite » heapify() « in nastavite položaj za »zgornja«, »leva« in »desna« vozlišča tako, da dodelite vrednosti spremenljivkam »večja«, »leva stran« oziroma »desna stran«.
  • Nato uporabite več ' če ” pogojnih stavkov za preverjanje, ali je leva stran ' vozlišče je večje od ' desna stran ” in obratno. Na koncu se večja vrednost shrani v » večji ” vozlišče.
  • Končno, novi ' večji ' se vrednost vozlišča preveri z že shranjeno vrednostjo v ' večji ” spremenljivka vozlišča. In ' zamenjaj() ' funkcija deluje ustrezno, da nastavi največjo vrednost v ' večji ” spremenljivka.

Po koncu izvedbene faze:

Posnetek prikazuje, da je največja kopica ustvarjena z uporabo ' maxHeapify() ” v Javi.

2. način: uporabite metodo »Collections.reverseOrder()«.

' Collections.reverseOrder() ” ponuja preprosto in jedrnato metodo za ustvarjanje Max Heap ” z razvrščanjem zbirke v obratnem vrstnem redu. To omogoča ponovno uporabo kode in se izogne ​​potrebi po izvajanju po meri » heapify «, kot je prikazano v spodnjem delčku kode:

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

javni razred ReverseOrderExample {
javni statični void main ( Vrvica [ ] args ) // ustvarjanje glavnega ( ) metoda
{
Seznam < Celo število > testsEle = nov ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Izvirni seznam: ' + testi ) ;
Zbirke.razvrsti ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Največja ustvarjena kopica: ' + testi ) ;
}
}

Razlaga zgornje kode:

  • Najprej uvozite » ArrayList ”, “ Zbirke « in » Seznam ” v datoteki Java.
  • Nato ustvarite » Seznam 'imenovan' TESTI « in na seznam vstavite lažne elemente.
  • Nato je ' razvrsti() ' se uporablja za razvrščanje podatkovnih elementov v naraščajočem vrstnem redu in posredovanje seznama kot parametra vzdolž ' Collections.reverseOrder() ” metoda. Zaradi tega je razvrščanje » TESTI ” v obratnem vrstnem redu.

Po koncu izvedbene faze:

Posnetek prikazuje, da je »Max Heap« ustvarjen in razvrščen z metodo »Collections.reverseOrder()«.

Zaključek

Z ustvarjanjem ' Max Heap «, lahko uporabniki uporabljajo metode »maxHeapify()« in »Collections.reverseOrder()«. Upravljajo zbirko elementov na način, ki omogoča hiter dostop do največjega elementa in učinkovito vzdrževanje urejenega reda. Odvisno je izključno od posebnih zahtev in potrebne ravni nadzora nad procesom ustvarjanja kopice.