Hur man använder Max Heap i Java?

Hur Man Anvander Max Heap I Java



Programmeraren kan enkelt hämta det maximala elementet genom att använda ' Max Heap ” binärt träd. Precis som i det här trädet finns det maximala elementet alltid i den övre noden av trädet som är känt som ' rot ' nod. Dessutom erbjuder den effektiv infogning och borttagning av element samtidigt som den sorterade ordningen bibehålls. Dessutom kan en 'Max Heap' enkelt utföra schemalagda jobb baserat på deras prioritet eller andra kriterier.

Den här artikeln förklarar följande innehåll:







Hur man använder Max Heap i Java?

en ' Max Heap ” används som den underliggande datastrukturen för att implementera en prioritetskö. I prioritetskön bearbetas data baserat på deras tilldelade prioritetsvärde. Det kan också användas för att sortera dataelementen i fallande ordning, effektivt.



'Max Heap' kan genereras med två metoder som beskrivs längs codec-exemplet nedan:



Metod 1: Använd metoden 'maxHeapify()'.

den ' maxHeapify() '-metoden genererar en ' Max Heap ” från en befintlig samling av element genom att transformera datastrukturer. Dessutom hjälper denna metod till att modifiera den ursprungliga arrayen på plats, vilket minskar behovet av ytterligare minne.





Besök till exempel koden nedan för att generera en ' Max Heap ' med metoden 'maxHeapify()':

importera java.util.ArrayList;
importera java.util.Collections;
importera java.util.List;

offentlig klass MaxHeapifyExam {
offentliga statiska tomrum huvud ( Sträng [ ] args ) // skapandet av huvud ( ) metod
{
Lista < Heltal > testsEle = ny ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Original lista: ' + tester ) ;
maxHeapify ( TESTER ) ;
System.out.println ( 'The Max Heap Generated:' + tester ) ;
}

privat statisk tomrum maxHeapify ( Lista < Heltal > TESTER ) {
int k = testEle.storlek ( ) ;
för ( int i = k / 2 - 1 ; i > = 0 ; jag-- ) {
heapify ( testsEle, k, i ) ;
}
}

privat statisk tomrum heapify ( Lista < Heltal > testsEle, int k, int i ) {
int större = i;
int vänstersida = 2 * i + 1 ;
int högersida = 2 * i + 2 ;
om ( vänster sida < k && testEle.get ( vänster sida ) > testEle.get ( större ) ) {
större = vänstersida;
}
om ( höger sida < k && testEle.get ( höger sida ) > testEle.get ( större ) ) {
större = högersida;
}
om ( större ! = i ) {
Collections.swap ( testsEle, i, större ) ;
heapify ( testsEle, k, större ) ;
}
}
}



Förklaring av ovanstående kod:

  • Först, listan ' TESTER ' initieras med dummy-dataelement i ' main() ”-metoden och tryckt på konsolen.
  • Därefter skickas 'testEle'-listan till funktionen 'maxHeapify()' och sedan visas den returnerade listan på konsolen.
  • Sedan ' maxHeapify() ”-metoden initieras och storleken på den tillhandahållna listan hämtas genom att använda ” storlek() 'metoden.
  • Använd sedan ' för ” loop för att ställa in heapstrukturen och beräkna positionen för varje nod.
  • Använd nu ' heapify() ”-metoden och ställ in positionen för noderna ”topp”, ”vänster” och ”höger” genom att tilldela värden till variablerna ”större”, ”vänstersida” respektive ”högersida”.
  • Efter det, använd flera ' om ' villkorliga uttalanden för att kontrollera om ' vänster sida ' noden är större än ' höger sida ” nod och vice versa. I slutändan lagras det större värdet i ' större ' nod.
  • Äntligen den nya ' större ' nodvärdet kontrolleras med det redan lagrade värdet i ' större ” nodvariabel. Och den ' byta() '-funktionen fungerar därefter för att ställa in det största värdet i ' större ” variabel.

Efter slutet av utförandefasen:

Ögonblicksbilden visar den maximala högen som genereras med hjälp av ' maxHeapify() ”-metoden i Java.

Metod 2: Använd metoden 'Collections.reverseOrder()'.

den ' Collections.reverseOrder() ”-metoden erbjuder en enkel och kortfattad metod för att skapa en ” Max Heap ” genom att sortera samlingen i omvänd ordning. Detta gör att koden kan återanvändas och undviker behovet av att implementera den anpassade ' heapify ' logik, som visas i nedanstående kodavsnitt:

importera java.util.ArrayList;
importera java.util.Collections;
importera java.util.List;

public class ReverseOrderExample {
offentliga statiska tomrum huvud ( Sträng [ ] args ) // skapandet av huvud ( ) metod
{
Lista < Heltal > testsEle = ny ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Original lista: ' + tester ) ;
Collections.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'The Max Heap Generated:' + tester ) ;
}
}

Förklaring av ovanstående kod:

  • Importera först ' ArrayList ”, “ Samlingar ' och ' Lista ”-verktyg i Java-filen.
  • Skapa sedan en ' Lista ' som heter ' TESTER ” och infoga dummy-element i listan.
  • Därefter ' sortera() ”-metoden används för att sortera dataelementen i stigande ordning och skicka listan som en parameter längs ” Collections.reverseOrder() 'metoden. Detta gör att sorteringen av ' TESTER ” lista i omvänd ordning.

Efter slutet av utförandefasen:

Ögonblicksbilden visar att 'Max Heap' genereras och sorteras med metoden 'Collections.reverseOrder()'.

Slutsats

Genom att skapa en ' Max Heap ”, kan användarna använda metoderna “maxHeapify()” och “Collections.reverseOrder()”. De hanterar en samling av element på ett sätt som möjliggör snabb åtkomst till det maximala elementet och effektivt underhåll av en sorterad beställning. Det beror enbart på de specifika kraven och nivån av kontroll som behövs över processen att skapa högar.