Mõistke, kuidas Java-s binaarhunnikut rakendada



See artikkel annab teile üksikasjaliku ja põhjaliku teabe näiteid selle kohta, kuidas Java-s binaarhunnikut juurutada.

See artikkel annab teile täieliku ülevaate kuhja sorteerimise toimimisest ja hiljem õpime Java-s kahendkuhja juurutama.

Selle artikli päevakord on järgmine:





  1. Mis on hunniku sort?
  2. Max Heap
  3. Min Heap
  4. Hunniku juurutamine Java-s
    • Skeem
    • Kood

Alustagem!

Mis on hunniku sort?

Heap on põhimõtteliselt puupõhine andmestruktuur. Sellel on sõlmed. Sõlm koosneb teatud elementidest. Iga sõlm sisaldab ühte elementi.



Sõlmedel võib olla lapsi. Kui lapsi pole, nimetatakse seda leheks.

visuaalse stuudio õpetus algajatele

Järgida tuleb kahte reeglit:

  • Iga sõlme väärtus peab olema väiksem või võrdne kõigi tema lastesse salvestatud väärtustega.
  • Sellel on võimalikult väike kõrgus.

Hunnikud on ülitõhusadvähim või suurim element.



Liigume nüüd min kuhjaga!

Min Heap

Min heap on täielik binaarne puu, milles juurelemendi väärtus on väiksem või võrdne kummagi alamelemendiga.

Min kuhja kujutamine

Arr [(i-1) / 2]: see tagastab vanemasõlme.

Arr [(2 * i) + 1]: see tagastab vasaku lapse sõlme.

Arr [(2 * i) + 2]: see tagastab õige lapse sõlme.

Min Heapil on teatud meetodid:

  • sisestada (): Puu otsa lisatakse uus võti. Kui uus võti on vanemast suurem, pole siis vaja midagi teha, muidu peame kuhja omaduse seadistamiseks ülespoole minema.
  • getMin (): see meetod aitab juurelemendi tagastada.
  • extractMin (): see meetod tagastab miinimumielement.

Nüüd liigutakse Maxi kuhja juurde.

Max kuhjaga

Max heap on täielik binaarne puu, milles juurelemendi väärtus on suurem või võrdne kummagi alamelemendiga.

Max heap koosneb ka mitmest meetodist!

  • Sisesta (): see lisab kuhja elemendi.
  • Kustuta () : see kustutab kuhjast elemendi.
  • FindMax (): see leiab hunnikust maksimaalse elemendi.
  • printHeap (): See prindib kuhja sisu

Nüüd lubage mul näidata kuhja rakendamist skeemi ja hiljem Java kaudukood.

Hunniku juurutamine Java-s

Skeem:

Heap

Ülaltoodud diagramm näitab Java binaarset hunnikut. Nagu olete õppinud, et on kaks kuhja: Min kuhja ja Max kuhja, siin on diagramm:

Nüüd, liikudes oma järgmise segmendi juurde, näeme, kuidas Java-s binaarhunnikut rakendada.

Kood:

public class BinaryHeap {private static final int d = 2 private int [] heap private int heapSize / ** * See lähtestab meie kuhja vaikesuurusega. * / public BinaryHeap (int capacity) {heapSize = 0 heap = new int [capacity + 1] Arrays.fill (heap, -1)} / ** * See kontrollib, kas hunnik on tühi või mitte * Keerukus: O ( 1) * / avalik boolean isEmpty () {return heapSize == 0} / ** * See kontrollib, kas hunnik on täis või mitte * Complexity: O (1) * / public Boolean isFull () {return heapSize == heap .length} private int parent (int i) {return (i-1) / d} private int kthChild (int i, int k) {return d * i + k} / ** * See lisab kuhjase uue elemendi * Keerukus: O (log N) * Halvima stsenaariumi korral peame liikuma juureni * / public void insert (int x) {if (isFull ()) viska uus NoSuchElementException ('Hunnik on täis, sisestamiseks pole ruumi uus element ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * See kustutab elemendi x indeksis * Keerukus: O (log N) * * / public int delete (int x) {if (isEmpty ()) viska uus NoSuchElementException ('Hunnik on tühi, ühtegi elementi pole kustutada') int-võti = hunnik [x] hunnik [x] = hunnik [heapSize -1] heapSize-- heapifyDown (x) retu rn key} / ** * Seda meetodit kasutatakse kuhja omaduse säilitamiseks elemendi sisestamise ajal. * * / private void heapifyUp (int i) {int temp = heap [i] while (i> 0 && temp> heap [parent (i)]) {heap [i] = heap [parent (i)] i = vanem (i)} heap [i] = temp} / ** * Seda meetodit kasutatakse kuhja omaduse säilitamiseks elemendi kustutamise ajal. * * / private void heapifyDown (int i) {int lapse int temp = kuhja [i] while (kthChild (i, 1)heap [rightChild]? leftChild: rightChild} / ** * Seda meetodit kasutati kogu kuhja * * / public void printHeap () {System.out.print ('nHeap =') elemendi printimiseks (int i = 0 i

Sellega jõuame selle Java binaarhunnikut käsitleva artikli lõppu. Vaadake Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma. Edureka Java J2EE ja SOA koolitus- ja sertifitseerimiskursus on mõeldud õpilastele ja spetsialistidele, kes soovivad olla Java arendajad. Kursus on loodud selleks, et anda teile Java programmeerimises edukas algus ja õpetada teid nii Java-põhiprogrammide kui ka edasijõudnute mõistete ning erinevate Java-raamistike, näiteks Hibernate & Spring, jaoks.

Kas teil on meile küsimus? Palun mainige seda selle ajaveebi “Java ArrayList” kommentaaride jaotises ja võtame teiega ühendust niipea kui võimalik.