Suprasti, kaip įdiegti dvejetainį kaupą „Java“



Šis straipsnis suteiks jums išsamią ir išsamią informaciją apie tai, kaip įdiegti dvejetainį kaupą java su pavyzdžiais.

Šis straipsnis suteiks jums pilną krūvos rūšiavimo darbo apžvalgą, o vėliau mes išmoksime įdiegti dvejetainį kaupą „Java“.

Štai šio straipsnio darbotvarkė:





  1. Kas yra krūvos rūšis?
  2. Maxas Heapas
  3. Min Heap
  4. Kaupo diegimas „Java“
    • Schema
    • Kodas

Pradėkime!

Kas yra krūvos rūšis?

Krūva iš esmės yra medžių duomenų struktūra. Jis turi mazgus. Mazgą sudaro tam tikri elementai. Kiekviename mazge yra vienas elementas.



Mazgai gali turėti vaikų. Jei tuo atveju, kai nėra vaikų, jis vadinamas Lapu.

Reikia laikytis dviejų taisyklių:

  • Kiekvieno mazgo vertė turi būti mažesnė arba lygi visoms jo vaikams saugomoms vertėms.
  • Jis turi mažiausią įmanomą aukštį.

Krūvos yra ypač efektyvios išgaunantmažiausias ar didžiausias elementas.



Dabar pereikime prie minio kaupo!

Min Heap

„Min heap“ yra visas dvejetainis medis, kuriame šakninio elemento vertė yra mažesnė arba lygi bet kuriam antriniam elementui.

Min. Kaupo vaizdavimas

Arr [[i-1] / 2]: tai grąžins pagrindinį mazgą.

kaip konvertuoti eilutę į datą Java

„Arr“ [(2 * i) + 1]: tai grąžins kairįjį vaiko mazgą.

„Arr“ [(2 * i) + 2]: taip bus grąžintas tinkamas vaiko mazgas.

Yra tam tikrų „Min Heap“ metodų:

  • Įdėti(): Pridedamas naujas raktas medžio gale. Jei naujas raktas yra didesnis už tėvą, tada nieko nereikia daryti, nes mes turime pereiti į viršų, kad nustatytume krūvos savybę.
  • „getMin“ (): šis metodas padeda grąžinti pagrindinį elementą.
  • extractMin (): šis metodas grąžina minimumąelementas.

Dabar pereinama prie Maxo krūvos.

Maks. Krūva

„Max heap“ yra visas dvejetainis medis, kuriame šakninio elemento vertė yra didesnė arba lygi bet kuriam antriniam elementui.

„Max heap“ taip pat sudaro keli metodai!

  • Įdėti (): jis į krūvą įterps elementą.
  • Ištrinti() : jis ištrins elementą iš kaupo.
  • „FindMax“ (): iš krūvos jis ras maksimalų elementą.
  • printHeap (): Tai atspausdins krūvos turinį

Dabar leiskite man parodyti krūvos įgyvendinimą per diagramą ir vėliau „Java“kodas.

Kaupo diegimas „Java“

Diagrama:

Heap

Aukščiau pateiktoje diagramoje parodytas „Java“ dvejetainis kaupas. Kaip sužinojote, kad yra du kaupai: „Min heap“ ir „Max heap“, pateikiama schema:

kaip išeiti iš programos Java

Dabar, pereidami prie kito segmento, pamatysime, kaip įdiegti dvejetainį kaupą „Java“.

Kodas:

public class BinaryHeap {private static final int d = 2 private int [] heap private int heapSize / ** * Tai pradės mūsų kaupą su numatytuoju dydžiu. * / public BinaryHeap (int capacity) {heapSize = 0 heap = new int [capacity + 1] Arrays.fill (heap, -1)} / ** * Tai patikrins, ar krūva tuščia, ar ne * Sudėtingumas: O ( 1) * / public boolean isEmpty () {return heapSize == 0} / ** * Tai patikrins, ar krūva pilna, ar ne * Sudėtingumas: O (1) * / viešoji loginė vertė yraFull () {return heapSize == heap .length} privatus int tėvas (int i) {return (i-1) / d} private int kthChild (int i, int k) {return d * i + k} / ** * Tai įterps naują elementą * Sudėtingumas: O (log N) * Blogiausiu atveju turime pereiti iki šaknies * / public void insert (int x) {if (isFull ()) throws new NoSuchElementException ('Heap is full, No space to insert naujas elementas ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Tai ištrins elementą rodyklėje x * Sudėtingumas: O (log N) * * / public int delete (int x) {if (isEmpty ()) thrown new NoSuchElementException ('Krūva tuščia, nėra elemento ištrinti') int raktas = krūva [x] krūva [x] = krūva [heapSize -1] heapSize-- heapifyDown (x) retu rn key} / ** * Šis metodas buvo naudojamas norint išsaugoti kaupo savybę įterpiant elementą. * * / privatus negaliojantis heapifyUp (int i) {int temp = heap [i] while (i> 0 && temp> heap [parent (i)]) {heap [i] = heap [parent (i)] i = parent (i)} heap [i] = temp} / ** * Šis metodas buvo naudojamas norint išsaugoti „heap“ ypatybę ištrinant elementą. * * / private void heapifyDown (int i) {int vaiko int temp = krūva [i] while (kthChild (i, 1)krūva [rightChild]? leftChild: rightChild} / ** * Šis metodas buvo naudojamas atsispausdinant visus krūvos elementus * * / public void printHeap () {System.out.print ('nHeap ='), skirtas (int i = 0 i

Tuo mes baigėme šį straipsnį apie „Java“ dvejetainį kaupą. Patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka“ „Java J2EE“ ir SOA mokymo ir sertifikavimo kursai yra skirti studentams ir specialistams, norintiems būti „Java“ kūrėjais. Kursas sukurtas tam, kad galėtumėte pradėti žvalgytis į „Java“ programavimą ir išmokyti pagrindinių bei pažangių „Java“ koncepcijų kartu su įvairiomis „Java“ sistemomis, tokiomis kaip „Hibernate & Spring“.

Turite mums klausimą? Prašau tai paminėti šio „Java ArrayList“ tinklaraščio komentarų skyriuje, ir mes kuo greičiau susisieksime su jumis.