Come utilizzare Max Heap in Java?

Come Utilizzare Max Heap In Java



Il programmatore può facilmente recuperare l'elemento massimo utilizzando il ' Max Mucchio ” albero binario. Come in questo albero, l'elemento massimo risiede sempre nel nodo superiore dell'albero che è noto come ' radice ” nodo. Inoltre, offre un efficiente inserimento ed eliminazione di elementi mantenendo l'ordine ordinato. Inoltre, un 'Max Heap' può eseguire facilmente lavori pianificati in base alla priorità o ad altri criteri.

Questo articolo illustra i seguenti contenuti:







Come utilizzare Max Heap in Java?

UN ' Max Mucchio ” viene utilizzato come struttura dati sottostante per l'implementazione di una coda prioritaria. Nella coda di priorità, i dati vengono elaborati in base al valore di priorità loro assegnato. Può anche essere utilizzato per ordinare gli elementi di dati in ordine decrescente, in modo efficiente.



Il 'Max Heap' può essere generato utilizzando due metodi descritti nell'esempio di codec di seguito:



Metodo 1: utilizzare il metodo 'maxHeapify ()'.

IL ' maxHeapify() ” metodo genera un “ Max Mucchio ” da una raccolta esistente di elementi trasformando le strutture dati. Inoltre, questo metodo aiuta a modificare l'array originale sul posto riducendo la necessità di memoria aggiuntiva.





Ad esempio, visita il codice seguente per generare un ' Max Mucchio ” utilizzando il metodo “maxHeapify()”:

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

classe pubblica MaxHeapifyExam {
public static void main ( Corda [ ] arg ) // creazione del principale ( ) metodo
{
Elenco < Numero intero > testsEle = nuovo ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Elenco originale: ' + testEle ) ;
maxHeapify ( PROVE ) ;
System.out.println ( 'L'heap massimo generato: ' + testEle ) ;
}

private static void maxHeapify ( Elenco < Numero intero > PROVE ) {
int k = testEle.size ( ) ;
per ( int i = k / 2 - 1 ; io > = 0 ; io-- ) {
ammucchiare ( testEle, k, i ) ;
}
}

private static void heapify ( Elenco < Numero intero > testEle, int k, int i ) {
int maggiore = i;
int LeftSide = 2 * io + 1 ;
int lato destro = 2 * io + 2 ;
Se ( lato sinistro < K && testEle.get ( lato sinistro ) > testEle.get ( maggiore ) ) {
maggiore = Lato sinistro;
}
Se ( lato destro < K && testEle.get ( lato destro ) > testEle.get ( maggiore ) ) {
maggiore = lato destro;
}
Se ( maggiore ! = io ) {
Collezioni.swap ( testEle, i, maggiore ) ;
ammucchiare ( testEle, k, maggiore ) ;
}
}
}



Spiegazione del codice precedente:

  • Innanzitutto, l'elenco ' PROVE ” viene inizializzato con elementi di dati fittizi nel “ principale() ” metodo e stampato sulla console.
  • Successivamente, l'elenco 'testEle' viene passato alla funzione 'maxHeapify()', quindi l'elenco restituito viene visualizzato sulla console.
  • Poi il ' maxHeapify() ” viene inizializzato e la dimensione dell'elenco fornito viene recuperata utilizzando il metodo “ misurare() ' metodo.
  • Successivamente, utilizza il ' per ” per impostare la struttura dell'heap e calcolare la posizione di ciascun nodo.
  • Ora usa il ' heapify() ” e impostare la posizione per i nodi “top”, “left” e “right” assegnando valori rispettivamente alle variabili “greater”, “leftSide” e “rightSide”.
  • Successivamente, utilizza più ' Se ” istruzioni condizionali per verificare se il “ lato sinistro ” il nodo è più grande del “ lato destro ” nodo e viceversa. Alla fine, il valore più grande viene memorizzato nel ' maggiore ” nodo.
  • Infine il nuovo “ maggiore ” il valore del nodo viene controllato con il valore già memorizzato nella “ maggiore ” variabile nodo. E il ' scambio() ” funzione funziona di conseguenza per impostare il valore più grande nel “ maggiore ' variabile.

Al termine della fase esecutiva:

L'istantanea mostra che l'heap massimo viene generato utilizzando ' maxHeapify() ” metodo in Java.

Metodo 2: utilizzare il metodo 'Collections.reverseOrder()'.

IL ' Collezioni.reverseOrder() ” offre un metodo semplice e conciso per generare un “ Max Mucchio ” ordinando la raccolta in ordine inverso. Ciò consente il riutilizzo del codice ed evita la necessità di implementare l'abitudine ' ammucchiare ' logica, come mostrato nel seguente frammento di codice:

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

classe pubblica ReverseOrderExample {
public static void main ( Corda [ ] arg ) // creazione del principale ( ) metodo
{
Elenco < Numero intero > testsEle = nuovo ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Elenco originale: ' + test ) ;
Collezioni.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'L'heap massimo generato: ' + test ) ;
}
}

Spiegazione del codice precedente:

  • Innanzitutto, importa il ' Lista di array ”, “ Collezioni ' E ' Elenco ” utilità nel file Java.
  • Quindi, crea un ' Elenco ' di nome ' PROVE ” e inserire elementi fittizi nell'elenco.
  • Successivamente, il “ ordinare() Il metodo ' viene utilizzato per ordinare gli elementi di dati in ordine crescente e passare l'elenco come parametro lungo il ' Collezioni.reverseOrder() ' metodo. Questo rende l'ordinamento del ' PROVE ” elenco in ordine inverso.

Al termine della fase esecutiva:

L'istantanea mostra che 'Max Heap' viene generato e ordinato utilizzando il metodo 'Collections.reverseOrder()'.

Conclusione

Creando un ' Max Mucchio ”, gli utenti possono utilizzare i metodi “maxHeapify()” e “Collections.reverseOrder()”. Gestiscono una raccolta di elementi in modo da consentire un rapido accesso all'elemento massimo e un'efficiente manutenzione di un ordine ordinato. Dipende esclusivamente dai requisiti specifici e dal livello di controllo necessario sul processo di creazione dell'heap.