Razumjeti kako implementirati binarnu hrpu u Javi



Ovaj članak pružit će vam detaljno i sveobuhvatno znanje o tome kako primjerima ograničiti binarnu hrpu u javi.

Ovaj će vam članak dati cjelovit pregled rada sortiranja hrpe, a kasnije ćemo naučiti implementirati Binarnu hrpu u Javi.

Evo dnevnog reda za ovaj članak:





  1. Što je sorta hrpe?
  2. Max Heap
  3. Min hrpa
  4. Implementacija hrpe u Javi
    • Dijagram
    • Kodirati

Započnimo!

Što je sorta hrpe?

Hrpa je u osnovi struktura podataka zasnovana na stablu. Ima čvorove. Čvor se sastoji od određenih elemenata. Svaki čvor sadrži jedan element.



Čvorovi mogu imati djecu. Ako nema djece, to se zove List.

Treba se pridržavati dva pravila:

  • Vrijednost svakog čvora mora biti manja ili jednaka svim vrijednostima pohranjenim u njegovoj podređenoj jedinici.
  • Ima najmanju moguću visinu.

Hrpe su izuzetno učinkovite u vađenjunajmanji ili najveći element.



def __init __ (samo):

Krenimo sada na min hrpu!

Min hrpa

Min hrpa je cjelovito binarno stablo u kojem je vrijednost korijenskog elementa manja ili jednaka bilo kojem od podređenih elemenata.

instalirati php na Windows 7

Prikaz minimalne hrpe

Arr [(i-1) / 2]: ovo će vratiti roditeljski čvor.

Arr [(2 * i) + 1]: ovo će vratiti lijevi podređeni čvor.

Arr [(2 * i) + 2]: ovo će vratiti pravi podređeni čvor.

Postoje određene metode Min Heap:

  • umetnuti(): Dodaje se novi ključ na kraju stabla. U slučaju da je novi ključ veći od nadređenog, tada ne treba ništa raditi, u protivnom, moramo krenuti prema gore da bismo postavili svojstvo hrpe.
  • getMin (): ove metode pomažu u vraćanju korijenskog elementa.
  • extractMin (): ova metoda vraća minimumelement.

Sada prelazimo na Max hrpu.

Maksimalna hrpa

Max heap je cjelovito binarno stablo u kojem je vrijednost korijenskog elementa veća ili jednaka bilo kojem od podređenih elemenata.

Max hrpa također se sastoji od nekoliko metoda!

  • Umetni (): umetnut će element u hrpu.
  • Izbrisati() : izbrisat će element iz hrpe.
  • FindMax (): pronaći će maksimalan element iz hrpe.
  • printHeap (): Ispisat će sadržaj hrpe

Sada ću vam pokazati primjenu hrpe kroz dijagram, a kasnije i Javakodirati.

Implementacija hrpe u Javi

Dijagram:

Heap

Gornji dijagram prikazuje binarnu hrpu u Javi. Kao što ste saznali da postoje dvije gomile: Min gomila i Max gomila, evo dijagrama:

Sada ćemo prijeći na naš sljedeći segment, vidjet ćemo kako implementirati binarnu hrpu u Javi.

Kodirati:

ako izrazi u sql upitima
javna klasa BinaryHeap {private static final int d = 2 private int [] heap private int heapSize / ** * To će inicijalizirati našu hrpu sa zadanom veličinom. * / public BinaryHeap (int capacity) {heapSize = 0 heap = new int [capacity + 1] Arrays.fill (heap, -1)} / ** * Ovo će provjeriti je li hrpa prazna ili nije * Složenost: O ( 1) * / public boolean isEmpty () {return heapSize == 0} / ** * Ovo će provjeriti je li hrpa puna ili nije * Složenost: 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} / ** * Ovo će u hrpu umetnuti novi element * Složenost: O (log N) * Kao najgori scenarij, moramo prijeći do korijena * / public void insert (int x) {if (isFull ()) baciti novi NoSuchElementException ('Hrpa je puna, nema prostora za umetanje novi element ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Ovo će izbrisati element u indeksu x * Složenost: O (log N) * * / public int delete (int x) {if (isEmpty ()) baciti novi NoSuchElementException ('Hrpa je prazna, nema elementa za brisanje') int key = heap [x] heap [x] = heap [heapSize -1] heapSize-- heapifyDown (x) retu rn ključ} / ** * Ova metoda korištena za održavanje svojstva hrpe tijekom umetanja elementa. * * / private void 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} / ** * Ova metoda korištena za održavanje svojstva hrpe tijekom brisanja elementa. * * / private void heapifyDown (int i) {int dijete int temp = heap [i] while (kthChild (i, 1)heap [rightChild]? leftChild: rightChild} / ** * Ova metoda korištena za ispis svih elemenata hrpe * * / public void printHeap () {System.out.print ('nHeap =') for (int i = 0 i

Ovime smo došli do kraja ovog članka o Binarnoj hrpi na Javi. Pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edurekin tečaj za obuku i certificiranje Java J2EE i SOA dizajniran je za studente i profesionalce koji žele biti programer Java. Tečaj je dizajniran da vam pruži početnu prednost u Java programiranju i osposobi vas za osnovne i napredne Java koncepte zajedno s raznim Java okvirima poput Hibernate & Spring.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare ovog bloga 'Java ArrayList', a mi ćemo vam se javiti u najkraćem mogućem roku.