Kako koristiti Max Heap u Javi?

Kako Koristiti Max Heap U Javi



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?

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.