Programer može lako dohvatiti maksimalni element korištenjem ' Max Heap ” binarno stablo. Kao u ovom stablu, najveći element uvijek se nalazi na gornjem čvoru stabla koji je poznat kao ' korijen ” čvor. Štoviše, nudi učinkovito umetanje i brisanje elemenata uz održavanje sortiranog poretka. Osim toga, 'Max Heap' može lako obavljati zakazane poslove na temelju svog prioriteta ili drugih kriterija.
Ovaj članak objašnjava sljedeći sadržaj:
- Kako koristiti Max Heap u Javi?
- Koristite metodu “maxHeapify()”.
- Upotrijebite metodu 'Collections.reverseOrder()'.
Kako koristiti Max Heap u Javi?
A “ Max Heap ” koristi se kao temeljna struktura podataka za implementaciju prioritetnog reda čekanja. U redu prioriteta podaci se obrađuju na temelju dodijeljene vrijednosti prioriteta. Također se može koristiti za učinkovito sortiranje podatkovnih elemenata u silaznom redoslijedu.
'Max Heap' može se generirati pomoću dvije metode koje su opisane uz primjer kodeka u nastavku:
Metoda 1: Koristite metodu “maxHeapify()”.
' maxHeapify() ' metoda generira ' Max Heap ” iz postojeće zbirke elemenata transformacijom struktura podataka. Štoviše, ova metoda pomaže u modificiranju izvornog polja na mjestu smanjujući potrebu za dodatnom memorijom.
Na primjer, posjetite donji kod da biste generirali ' Max Heap ” pomoću metode “maxHeapify()”:
import java.util.ArrayList;import java.util.Collections;
import java.util.List;
javna klasa MaxHeapifyExam {
public static void main ( Niz [ ] args ) // stvaranje glavnog ( ) metoda
{
Popis < Cijeli broj > testsEle = novi ArrayList <> ( ) ;
testEle.dodaj ( 5 ) ;
testEle.dodaj ( 3 ) ;
testEle.dodaj ( 8 ) ;
testEle.dodaj ( 2 ) ;
testEle.dodaj ( 1 ) ;
testEle.dodaj ( 7 ) ;
System.out.println ( 'Izvorni popis: ' + testovi ) ;
maxHeapify ( TESTOVI ) ;
System.out.println ( 'Generirana maksimalna gomila: ' + testovi ) ;
}
privatni statički void maxHeapify ( Popis < Cijeli broj > TESTOVI ) {
int k = testEle.size ( ) ;
za ( int i = k / 2 - 1 ; ja > = 0 ; ja-- ) {
gomilati ( testoviEle, k, i ) ;
}
}
privatna statična praznina heapify ( Popis < Cijeli broj > testoviEle, int k, int i ) {
int veći = i;
int lijeva strana = 2 * ja + 1 ;
int desna strana = 2 * ja + 2 ;
ako ( lijeva strana < k && testEle.get ( lijeva strana ) > testEle.get ( veća ) ) {
veće = lijeva strana;
}
ako ( desna strana < k && testEle.get ( desna strana ) > testEle.get ( veća ) ) {
veće = desna strana;
}
ako ( veća ! = i ) {
Zbirke.swap ( testoviEle, i, veći ) ;
gomilati ( testoviEle, k, veći ) ;
}
}
}
Objašnjenje gornjeg koda:
- Prvo, popis ' TESTOVI ” inicijalizira se lažnim podatkovnim elementima u „ glavni() ” i ispisan na konzoli.
- Zatim se popis 'testEle' prosljeđuje funkciji 'maxHeapify()', a zatim se vraćeni popis prikazuje na konzoli.
- Onda ' maxHeapify() ' se inicijalizira i veličina dostavljenog popisa se dohvaća korištenjem ' veličina() ” metoda.
- Zatim upotrijebite ' za ” za postavljanje strukture gomile i izračunavanje položaja svakog čvora.
- Sada upotrijebite ' gomilati() ” i postavite položaj za „vrh”, „lijevo” i „desno” čvorove dodjeljivanjem vrijednosti varijablama „veća”, „lijeva strana” i „desna strana”.
- Nakon toga upotrijebite više ' ako ” uvjetne naredbe za provjeru je li „ lijeva strana ' čvor je veći od ' desna strana ” čvor i obrnuto. Na kraju, veća vrijednost se pohranjuje u ' veća ” čvor.
- Konačno, novi “ veća ' vrijednost čvora provjerava se s već pohranjenom vrijednošću u ' veća ” varijabla čvora. I ' zamijeniti () ” funkcionira u skladu s time da postavi najveću vrijednost u “ veća ” varijabla.
Nakon završetka faze izvršenja:
Snimka pokazuje da je maksimalna gomila generirana pomoću ' maxHeapify() ” metoda u Javi.
Metoda 2: Koristite metodu “Collections.reverseOrder()”.
' Collections.reverseOrder() ” nudi jednostavnu i konciznu metodu za generiranje Max Heap ” sortiranjem zbirke obrnutim redoslijedom. Ovo omogućuje ponovnu upotrebu koda i izbjegava potrebu za implementacijom prilagođenog ' gomilati ”, kao što je prikazano u donjem isječku koda:
import java.util.ArrayList;import java.util.Collections;
import java.util.List;
javna klasa ReverseOrderExample {
public static void main ( Niz [ ] args ) // stvaranje glavnog ( ) metoda
{
Popis < Cijeli broj > testsEle = novi ArrayList <> ( ) ;
testEle.dodaj ( 5 ) ;
testEle.dodaj ( 38 ) ;
testEle.dodaj ( 98 ) ;
testEle.dodaj ( 26 ) ;
testEle.dodaj ( 1 ) ;
testEle.dodaj ( 73 ) ;
System.out.println ( 'Izvorni popis: ' + testovi ) ;
Zbirke.sortirati ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Generirana maksimalna gomila: ' + testovi ) ;
}
}
Objašnjenje gornjeg koda:
- Prvo uvezite ' ArrayList ”, “ Zbirke ' i ' Popis ” pomoćne programe u Java datoteci.
- Zatim stvorite ' Popis 'nazvan' TESTOVI ” i umetnite lažne elemente na popis.
- Zatim, ' vrsta() ' koristi se za sortiranje podatkovnih elemenata uzlaznim redoslijedom i prosljeđivanje popisa kao parametra duž ' Collections.reverseOrder() ” metoda. Ovo čini sortiranje ' TESTOVI ” popis obrnutim redoslijedom.
Nakon završetka faze izvršenja:
Snimka pokazuje da se 'Max Heap' generira i sortira pomoću metode 'Collections.reverseOrder()'.
Zaključak
Stvaranjem ' Max Heap ”, korisnici mogu koristiti metode “maxHeapify()” i “Collections.reverseOrder()”. Oni upravljaju zbirkom elemenata na način koji omogućuje brz pristup maksimalnom elementu i učinkovito održavanje sortiranog poretka. Ovisi isključivo o specifičnim zahtjevima i potrebnoj razini kontrole nad procesom stvaranja hrpe.