Kā Java lietot Max Heap?

Ka Java Lietot Max Heap



Programmētājs var viegli izgūt maksimālo elementu, izmantojot ' Max Heap ”binārais koks. Tāpat kā šajā kokā, maksimālais elements vienmēr atrodas koka augšējā mezglā, kas ir pazīstams kā ' sakne ” mezgls. Turklāt tas piedāvā efektīvu elementu ievietošanu un dzēšanu, vienlaikus saglabājot sakārtoto secību. Turklāt “Max Heap” var viegli veikt plānotos darbus, pamatojoties uz to prioritāti vai citiem kritērijiem.

Šajā rakstā ir izskaidrots šāds saturs:







Kā Java lietot Max Heap?

A ' Max Heap ” tiek izmantota kā pamatā esošā datu struktūra prioritārās rindas ieviešanai. Prioritātes rindā dati tiek apstrādāti, pamatojoties uz tiem piešķirto prioritātes vērtību. To var arī izmantot, lai efektīvi kārtotu datu elementus dilstošā secībā.



Maksimālo kaudzi var ģenerēt, izmantojot divas metodes, kas aprakstītas tālāk sniegtajā kodeka piemērā.



1. metode: izmantojiet metodi “maxHeapify()”.

' maxHeapify() ' metode ģenerē ' Max Heap ” no esošas elementu kolekcijas, pārveidojot datu struktūras. Turklāt šī metode palīdz mainīt sākotnējo masīvu vietā, samazinot vajadzību pēc papildu atmiņas.





Piemēram, apmeklējiet tālāk norādīto kodu, lai ģenerētu “ Max Heap ” izmantojot metodi “maxHeapify()”:

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

publiskā klase MaxHeapifyExam {
publisks statisks tukšums galvenais ( Stīga [ ] args ) // galvenā izveide ( ) metodi
{
Saraksts < Vesels skaitlis > testsEle = jauns ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Sākotnējais saraksts:' + testi ) ;
maxHeapify ( PĀRBAUDES ) ;
System.out.println ( 'Izveidotā maksimālā kaudze:' + testi ) ;
}

privāts statisks tukšums maxHeapify ( Saraksts < Vesels skaitlis > PĀRBAUDES ) {
int k = testEle.size ( ) ;
priekš ( int i = k / 2 - 1 ; i > = 0 ; es-- ) {
kuplot ( testiEle, k, i ) ;
}
}

privāts statisks tukšums heapify ( Saraksts < Vesels skaitlis > testiEle, int k, int i ) {
int lielāks = i;
int kreisā puse = 2 * es + 1 ;
int labā puse = 2 * es + 2 ;
ja ( kreisā puse < k && testEle.get ( kreisā puse ) > testEle.get ( lielāks ) ) {
lielāks = kreisā puse;
}
ja ( labā puse < k && testEle.get ( labā puse ) > testEle.get ( lielāks ) ) {
lielāks = labā puse;
}
ja ( lielāks ! = i ) {
Collections.swap ( testiEle, i, lielāka ) ;
kuplot ( testiEle, k, lielāka ) ;
}
}
}



Iepriekš minētā koda skaidrojums:

  • Pirmkārt, saraksts ' PĀRBAUDES ' tiek inicializēts ar fiktīviem datu elementiem laukā ' galvenais () ” metodi un uzdrukāts uz konsoles.
  • Pēc tam saraksts “testEle” tiek nodots funkcijai “maxHeapify()”, un pēc tam atgrieztais saraksts tiek parādīts konsolē.
  • Pēc tam ' maxHeapify() ” metode tiek inicializēta un nodrošinātā saraksta lielums tiek izgūts, izmantojot Izmērs() ” metode.
  • Pēc tam izmantojiet ' priekš ” cilpa, lai iestatītu kaudzes struktūru un aprēķinātu katra mezgla pozīciju.
  • Tagad izmantojiet ' kaudze () ” metodi un iestatiet pozīciju “augšējiem”, “kreisajiem” un “labajiem” mezgliem, piešķirot vērtības attiecīgi mainīgajiem “greater”, “leftSide” un “rightSide”.
  • Pēc tam izmantojiet vairākus ja nosacītos paziņojumus, lai pārbaudītu, vai kreisā puse 'mezgls ir lielāks par ' labā puse ” mezgls un otrādi. Galu galā lielākā vērtība tiek saglabāta mapē “ lielāks ” mezgls.
  • Visbeidzot, jaunais ' lielāks mezgla vērtība tiek pārbaudīta ar jau saglabāto vērtību lielāks ” mezgla mainīgais. Un ' apmainīt () Funkcija darbojas atbilstoši, lai iestatītu lielāko vērtību lielāks ” mainīgais.

Pēc izpildes posma beigām:

Momentuzņēmums parāda, ka maksimālā kaudze tiek ģenerēta, izmantojot maxHeapify() ” metodi Java.

2. metode: izmantojiet metodi “Collections.reverseOrder()”.

' Collections.reverseOrder() metode piedāvā vienkāršu un kodolīgu metodi, lai ģenerētu Max Heap ”, sakārtojot kolekciju apgrieztā secībā. Tas ļauj kodu atkārtoti izmantot un izvairīties no nepieciešamības ieviest pielāgotu ' kuplot ” loģika, kā parādīts zemāk esošajā koda fragmentā:

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

publiskā klase ReverseOrderExample {
publisks statisks tukšums galvenais ( Stīga [ ] args ) // galvenā izveide ( ) metodi
{
Saraksts < Vesels skaitlis > testsEle = jauns ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Sākotnējais saraksts:' + testi ) ;
Kolekcijas.kārtot ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Izveidotā maksimālā kaudze:' + testi ) ;
}
}

Iepriekš minētā koda skaidrojums:

  • Vispirms importējiet ' ArrayList ”, “ Kolekcijas ' un ' Saraksts ” utilītprogrammas Java failā.
  • Pēc tam izveidojiet ' Saraksts 'nosaukts' PĀRBAUDES ” un sarakstā ievietojiet fiktīvus elementus.
  • Tālāk “ kārtot () ” metode tiek izmantota, lai kārtotu datu elementus augošā secībā un nodotu sarakstu kā parametru gar “ Collections.reverseOrder() ” metode. Tas padara “ PĀRBAUDES ” sarakstu apgrieztā secībā.

Pēc izpildes posma beigām:

Momentuzņēmums parāda, ka “Max Heap” tiek ģenerēts un sakārtots, izmantojot metodi “Collections.reverseOrder()”.

Secinājums

izveidojot “ Makss kaudze ”, lietotāji var izmantot metodes “maxHeapify()” un “Collections.reverseOrder()”. Viņi pārvalda elementu kolekciju tādā veidā, kas ļauj ātri piekļūt maksimālajam elementam un efektīvi uzturēt sakārtotu secību. Tas ir atkarīgs tikai no īpašajām prasībām un kaudzes izveides procesa kontroles līmeņa.