Izprotiet, kā Java ieviest bināro kaudzi



Šis raksts sniegs jums detalizētu un visaptverošu informāciju par to, kā ieviest bināro kaudzi Java, izmantojot piemērus.

Šis raksts sniegs jums pilnīgu pārskatu par kaudzes šķirošanas darbību, un vēlāk mēs iemācīsimies ieviest bināro kaudzi Java.

Šī raksta darba kārtība:





  1. Kas ir kaudzes šķirošana?
  2. Makss Heap
  3. Min Heap
  4. Kaudzes ieviešana Java
    • Diagramma
    • Kods

Sāksim!

Kas ir kaudzes šķirošana?

Kaudze būtībā ir uz kokiem balstīta datu struktūra. Tam ir mezgli. Mezgls sastāv no noteiktiem elementiem. Katrā mezglā ir viens elements.



Linux administratora lomas un pienākumi

Mezglos var būt bērni. Ja gadījumā nav bērnu, to sauc par Lapu.

Ir jāievēro divi noteikumi:

  • Katra mezgla vērtībai jābūt mazākai vai vienādai ar visām tās bērnos saglabātajām vērtībām.
  • Tam ir mazākais iespējamais augstums.

Kaudzes ir ārkārtīgi efektīvasvismazākais vai lielākais elements.



Pārejam uz min kaudzi tagad!

Min Heap

Min kaudze ir pilnīgs binārs koks, kurā saknes elementa vērtība ir mazāka vai vienāda ar kādu no bērna elementiem.

Min kaudzes attēlojums

Ierašanās [(i-1) / 2]: tas atgriezīs vecāku mezglu.

Arr [[2 * i) + 1]: tas atgriezīs kreiso bērna mezglu.

Arr [[2 * i) + 2]: tas atgriezīs pareizo bērna mezglu.

Ir dažas Min Heap metodes:

  • ievietot (): Koka galā tiek pievienota jauna atslēga. Gadījumā, ja jaunā atslēga ir lielāka nekā vecāka, tad nekas nav jādara, citādi mums ir jāiet pāri, lai iestatītu kaudzes īpašumu.
  • getMin (): šī metode palīdz atgriezt saknes elementu.
  • extractMin (): šī metode atgriež minimumuelements.

Pārejam pie Maksa kaudzes tagad.

Maks kaudze

Maks. Kaudze ir pilnīgs binārs koks, kurā saknes elementa vērtība ir lielāka vai vienāda ar kādu no bērna elementiem.

Max heap sastāv arī no vairākām metodēm!

  • Ievietot (): tas ievietos elementu kaudzē.
  • Dzēst () : tas izdzēsīs elementu no kaudzes.
  • FindMax (): tas atradīs maksimālo elementu no kaudzes.
  • printHeap (): Tas izdrukās kaudzes saturu

Tagad ļaujiet man parādīt kaudzes ieviešanu, izmantojot diagrammu un vēlāk Javakods.

Kaudzes ieviešana Java

Shēma:

Heap

Iepriekš redzamā diagramma parāda Java bināro kaudzi. Kā jūs uzzinājāt, ka ir divi kaudzes: Min kaudze un Maks kaudze, šeit ir shēma:

Tagad, pārejot uz nākamo segmentu, mēs redzēsim, kā Java ieviest bināro kaudzi.

Kods:

public class BinaryHeap {private static final int d = 2 private int [] heap private int heapSize / ** * Tas inicializēs mūsu kaudzi ar noklusējuma lielumu. * / public BinaryHeap (int kapacitāte) {heapSize = 0 kaudze = jauns int [kapacitāte + 1] Masīvi.fill (kaudze, -1)} / ** * Tas pārbaudīs, vai kaudze ir tukša vai nav * Sarežģītība: O ( 1) * / public boolean isEmpty () {return heapSize == 0} / ** * Tas pārbaudīs, vai kaudze ir pilna vai nav * Sarežģītība: O (1) * / public Boolean isFull () {return heapSize == kaudze .length} privāts int vecāks (int i) {return (i-1) / d} private int kthChild (int i, int k) {return d * i + k} / ** * Tas ievietos jaunu elementu kaudzē * Sarežģītība: O (log N) * Sliktākajā gadījumā mums ir jāiet pāri saknei * / public void insert (int x) {if (isFull ()) mest jaunu NoSuchElementException ('Kausa pilna, nav vietas, kur ievietot jauns elements ') kaudze [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Tas izdzēsīs elementu indeksā x * Sarežģītība: O (log N) * * / public int delete (int x) {if (isEmpty ()) mest jaunu NoSuchElementException ('Kaudze ir tukša, nav neviena elementa, ko dzēst') int atslēga = kaudze [x] kaudze [x] = kaudze [kaudzes izmērs -1] heapSize-- heapifyDown (x) rn key} / ** * Šī metode tika izmantota, lai saglabātu kaudzes rekvizītu, vienlaikus ievietojot elementu. * * / private void heapifyUp (int i) {int temp = kaudze [i] while (i> 0 && temp> kaudze [vecāks (i)]) {kaudze [i] = kaudze [vecāks (i)] i = vecāks (i)} kaudze [i] = temp} / ** * Šī metode tika izmantota, lai saglabātu kaudzes rekvizītu, dzēšot elementu. * * / private void heapifyDown (int i) {int bērns int temp = kaudze [i] while (kthChild (i, 1)kaudze [rightChild]? leftChild: rightChild} / ** * Šī metode tika izmantota visu kaudzes elementu * * / public void printHeap () {System.out.print ('nHeap =') drukāšanai (int i = 0 i

Ar to mēs esam nonākuši šī raksta par Java bināro kaudzi beigās. Pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji. Kurss ir paredzēts, lai dotu jums sākumu Java programmēšanā un apmācītu gan Java, gan uzlabotas koncepcijas, kā arī dažādas Java struktūras, piemēram, Hibernate & Spring.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī “Java ArrayList” emuāra komentāru sadaļā, un mēs sazināsimies ar jums pēc iespējas ātrāk.