Hogyan használjuk a Max Heap-et Java-ban?

Hogyan Hasznaljuk A Max Heap Et Java Ban



A programozó könnyen lekérheti a maximális elemet a „ Max Heap ” bináris fa. Mint ebben a fában, a maximális elem mindig a fa felső csomópontjában található, amelyet ' gyökér ” csomópont. Ezen túlmenően hatékony beszúrást és törlést tesz lehetővé a rendezett sorrend megőrzése mellett. Ezen túlmenően, a „Max Heap” könnyen végrehajthat ütemezett feladatokat a prioritásuk vagy más kritériumok alapján.

Ez a cikk a következő tartalmat magyarázza el:







Hogyan használjuk a Max Heap-et Java-ban?

egy ' Max Heap ”-t használják az alapul szolgáló adatstruktúraként egy prioritási sor megvalósításához. A prioritási sorban az adatok feldolgozása a hozzájuk rendelt prioritási érték alapján történik. Használható az adatelemek csökkenő sorrendbe rendezésére is, hatékonyan.



A „Max Heap” két módszerrel hozható létre, amelyeket az alábbi kodekpélda mentén ismertetünk:



1. módszer: Használja a „maxHeapify()” módszert

A ' maxHeapify() ' metódus generál egy ' Max Heap ” egy létező elemgyűjteményből adatstruktúrák átalakításával. Ezenkívül ez a módszer segít az eredeti tömb helyben történő módosításában, csökkentve a további memória szükségességét.





Például keresse fel az alábbi kódot egy ' Max Heap ” a „maxHeapify()” metódussal:

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

nyilvános osztály MaxHeapifyExam {
public static void main ( Húr [ ] args ) // fő létrehozása ( ) módszer
{
Lista < Egész szám > testsEle = új ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Eredeti lista:' + tesztek ) ;
maxHeapify ( TESZTEK ) ;
System.out.println ( 'A létrehozott Max Heap:' + tesztek ) ;
}

privát static void maxHeapify ( Lista < Egész szám > TESZTEK ) {
int k = testEle.size ( ) ;
számára ( int i = k / 2 - 1 ; én > = 0 ; én-- ) {
halmozzanak ( tesztekEle, k, i ) ;
}
}

privát static void heapify ( Lista < Egész szám > tesztekEle, int k, int i ) {
int nagyobb = i;
int leftSide = 2 * én + 1 ;
int jobboldal = 2 * én + 2 ;
ha ( bal oldal < k && testEle.get ( bal oldal ) > testEle.get ( nagyobb ) ) {
nagyobb = baloldal;
}
ha ( jobb oldal < k && testEle.get ( jobb oldal ) > testEle.get ( nagyobb ) ) {
nagyobb = jobboldal;
}
ha ( nagyobb ! = i ) {
Collections.swap ( tesztekEle, i, nagyobb ) ;
halmozzanak ( tesztekEle, k, nagyobb ) ;
}
}
}



A fenti kód magyarázata:

  • Először is a lista ' TESZTEK ' ál adatelemekkel van inicializálva a ' fő() ” módszerrel, és a konzolra nyomtatva.
  • Ezután a „testEle” listát átadjuk a „maxHeapify()” függvénynek, majd a visszaadott lista megjelenik a konzolon.
  • Aztán a ' maxHeapify() ” metódust inicializálja, és a megadott lista méretét a „ méret() ” módszerrel.
  • Ezután használja a „ számára ” hurkot a kupacszerkezet beállításához és az egyes csomópontok pozíciójának kiszámításához.
  • Most használja a „ halmoz () ” metódussal, és állítsa be a „felső”, „bal” és „jobb” csomópontok pozícióját a „nagyobb”, „leftSide” és „rightSide” változók értékeinek hozzárendelésével.
  • Ezt követően használjon több „ ha ” feltételes kijelentések annak ellenőrzésére, hogy a „ bal oldal ' csomópont nagyobb, mint a ' jobb oldal ” csomópont és fordítva. Végül a nagyobb érték a „ nagyobb ” csomópont.
  • Végül az új „ nagyobb ' csomópontértéket a rendszer a már tárolt értékkel ellenőrzi nagyobb ” csomóponti változó. És a ' csere() ” funkció ennek megfelelően működik a legnagyobb érték beállításához a „ nagyobb ” változó.

A végrehajtási szakasz vége után:

A pillanatkép azt mutatja, hogy a maximális kupac a ' maxHeapify() ” módszer Java nyelven.

2. módszer: Használja a „Collections.reverseOrder()” módszert

A ' Collections.reverseOrder() ' módszer egy egyszerű és tömör módszert kínál egy ' Max Heap ” a gyűjtemény fordított sorrendben történő rendezésével. Ez lehetővé teszi a kód újrafelhasználását, és elkerüli az egyéni „ halmozzanak ” logikát, amint azt az alábbi kódrészlet mutatja:

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

public class ReverseOrderExample {
public static void main ( Húr [ ] args ) // fő létrehozása ( ) módszer
{
Lista < Egész szám > testsEle = új ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Eredeti lista:' + tesztek ) ;
Gyűjtemények.sort ( testsEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'A létrehozott Max Heap:' + tesztek ) ;
}
}

A fenti kód magyarázata:

  • Először importálja a ' Tömb lista ”, „ Gyűjtemények ” és „ Lista ” segédprogramokat a Java fájlban.
  • Ezután hozzon létre egy „ Lista ' nevezett ' TESZTEK ” és szúrjon be dummy elemeket a listába.
  • Ezután a „ fajta() ” metódus az adatelemek növekvő sorrendbe rendezésére és a lista paraméterként történő átadására szolgál a „ Collections.reverseOrder() ” módszerrel. Ez teszi a „ TESZTEK ” listát fordított sorrendben.

A végrehajtási szakasz vége után:

A pillanatkép azt mutatja, hogy a „Max Heap” a „Collections.reverseOrder()” metódussal van előállítva és rendezve.

Következtetés

Létrehozva egy „ Max Heap ”, a felhasználók használhatják a „maxHeapify()” és a „Collections.reverseOrder()” metódusokat. Olyan módon kezelik az elemek gyűjteményét, amelyek lehetővé teszik a gyors hozzáférést a maximális elemhez és a rendezett sorrend hatékony fenntartását. Ez kizárólag a speciális követelményektől és a kupac létrehozási folyamata feletti ellenőrzési szinttől függ.