Com utilitzar Max Heap a Java?

Com Utilitzar Max Heap A Java



El programador pot recuperar fàcilment l'element màxim utilitzant el ' Munt màxim ” arbre binari. Com en aquest arbre, l'element màxim sempre resideix al node superior de l'arbre que es coneix com ' arrel ' node. A més, ofereix una inserció i supressió eficients d'elements mantenint l'ordre ordenat. A més, un 'Max Heap' pot realitzar fàcilment treballs programats segons la seva prioritat o altres criteris.

Aquest article explica el contingut següent:







Com utilitzar Max Heap a Java?

A ' Munt màxim s'utilitza com a estructura de dades subjacent per implementar una cua de prioritats. A la cua de prioritats, les dades es processen en funció del valor de prioritat assignat. També es pot utilitzar per ordenar els elements de dades en ordre descendent, de manera eficient.



El 'Max Heap' es pot generar mitjançant dos mètodes que es descriuen al llarg de l'exemple de còdec següent:



Mètode 1: utilitzeu el mètode 'maxHeapify()'.

El ' maxHeapify() El mètode genera un Munt màxim ” d'una col·lecció existent d'elements transformant estructures de dades. A més, aquest mètode ajuda a modificar la matriu original al seu lloc reduint la necessitat de memòria addicional.





Per exemple, visiteu el codi següent per generar un ' Munt màxim ” utilitzant el mètode “maxHeapify()”:

importar java.util.ArrayList;
importar java.util.Collections;
importar java.util.List;

classe pública MaxHeapifyExam {
principal buit estàtic públic ( Corda [ ] args ) // creació de principal ( ) mètode
{
Llista < Enter > testsEle = nova ArrayList <> ( ) ;
provaEle.add ( 5 ) ;
provaEle.add ( 3 ) ;
provaEle.add ( 8 ) ;
provaEle.add ( 2 ) ;
provaEle.add ( 1 ) ;
provaEle.add ( 7 ) ;
System.out.println ( 'Llista original:' + proves ) ;
maxHeapify ( PROVES ) ;
System.out.println ( 'El munt màxim generat:' + proves ) ;
}

Vod static privat maxHeapify ( Llista < Enter > PROVES ) {
int k = testEle.size ( ) ;
per ( int i = k / 2 - 1 ; i > = 0 ; jo-- ) {
amuntegar ( provesEle, k, i ) ;
}
}

buit estàtic privat heapify ( Llista < Enter > provesEle, int k, int i ) {
int major = i;
int costat esquerre = 2 * i + 1 ;
int costat dret = 2 * i + 2 ;
si ( costat esquerre < k && provaEle.get ( costat esquerre ) > provaEle.get ( més gran ) ) {
major = costat esquerre;
}
si ( costat dret < k && provaEle.get ( costat dret ) > provaEle.get ( més gran ) ) {
major = costat dret;
}
si ( més gran ! = i ) {
Col·leccions.swap ( provesEle, i, major ) ;
amuntegar ( provesEle, k, major ) ;
}
}
}



Explicació del codi anterior:

  • En primer lloc, la llista ' PROVES ' s'inicia amb elements de dades ficticis al ' principal () ” i imprès a la consola.
  • A continuació, la llista 'testEle' es passa a la funció 'maxHeapify()' i, a continuació, la llista retornada es mostra a la consola.
  • Aleshores el ' maxHeapify() s'inicia el mètode i la mida de la llista proporcionada es recupera utilitzant el ' mida () ” mètode.
  • A continuació, utilitzeu el ' per ” bucle per establir l'estructura del munt i calcular la posició de cada node.
  • Ara, utilitzeu el ' heapify() ” i establiu la posició per als nodes “superior”, “esquerra” i “dreta” assignant valors a les variables “més gran”, “LeftSide” i “rightSide”, respectivament.
  • Després d'això, utilitzeu múltiples ' si ” declaracions condicionals per comprovar si el “ costat esquerre 'el node és més gran que el ' costat dret ” node i viceversa. Al final, el valor més gran s'emmagatzema al ' més gran ' node.
  • Finalment, el nou “ més gran El valor del node ' es verifica amb el valor ja emmagatzemat a ' més gran ” variable de node. I la ' intercanviar () La funció funciona en conseqüència per establir el valor més gran a la més gran ” variable.

Un cop finalitzada la fase d'execució:

La instantània mostra que el munt màxim es genera mitjançant el ' maxHeapify() ” mètode en Java.

Mètode 2: utilitzeu el mètode 'Collections.reverseOrder()'.

El ' Collections.reverseOrder() ” ofereix un mètode senzill i concís per generar un “ Munt màxim ” ordenant la col·lecció en ordre invers. Això permet reutilitzar el codi i evita la necessitat d'implementar el personalitzat ' amuntegar ” lògica, tal com es mostra al fragment de codi següent:

importar java.util.ArrayList;
importar java.util.Collections;
importar java.util.List;

classe pública ReverseOrderExample {
principal buit estàtic públic ( Corda [ ] args ) // creació de principal ( ) mètode
{
Llista < Enter > testsEle = nova ArrayList <> ( ) ;
provaEle.add ( 5 ) ;
provaEle.add ( 38 ) ;
provaEle.add ( 98 ) ;
provaEle.add ( 26 ) ;
provaEle.add ( 1 ) ;
provaEle.add ( 73 ) ;
System.out.println ( 'Llista original:' + proves ) ;
Col·leccions.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'El munt màxim generat:' + proves ) ;
}
}

Explicació del codi anterior:

  • Primer, importeu el ' ArrayList ”, “ Col·leccions ' i ' Llista ” utilitats al fitxer Java.
  • A continuació, creeu un ' Llista 'anomenat' PROVES ” i inseriu elements ficticis a la llista.
  • A continuació, el ' ordenar () ” s'utilitza per ordenar els elements de dades en ordre ascendent i passar la llista com a paràmetre al llarg del “ Collections.reverseOrder() ” mètode. Això fa que l'ordenació dels ' PROVES ” llista en ordre invers.

Un cop finalitzada la fase d'execució:

La instantània mostra que 'Max Heap' es genera i s'ordena mitjançant el mètode 'Collections.reverseOrder()'.

Conclusió

En crear un ' Munt màxim ”, els usuaris poden utilitzar els mètodes “maxHeapify()” i “Collections.reverseOrder()”. Gestionen una col·lecció d'elements de manera que permet un accés ràpid a l'element màxim i un manteniment eficient d'un ordre ordenat. Només depèn dels requisits específics i del nivell de control necessari sobre el procés de creació d'heap.