Esbrineu com implementar un munt binari a Java

Aquest article us proporcionarà un coneixement detallat i complet de com implementar un munt binari a Java amb exemples.

Aquest article us proporcionarà una visió general completa del funcionament del tipus d’emmagatzematge dinàmic i més endavant aprendrem a implementar un muntatge binari a Java.



Aquí teniu l’agenda d’aquest article:



  1. Què és el tipus de pila?
  2. Heap màxim
  3. Pila mínima
  4. Implementació de pila a Java
    • Diagrama
    • Codi

Anem a començar!

Què és el tipus de pila?

Heap és bàsicament una estructura de dades basada en arbre. Té nodes. El node comprèn certs elements. Cada node conté un element.



el que és té una relació a Java

Els nodes poden tenir fills. Si en cas que no hi hagi nens, s’anomena Fulla.

Hi ha dues regles a seguir:

  • El valor de cada node ha de ser inferior o igual a tots els valors emmagatzemats als seus fills.
  • Té la mínima alçada possible.

Els munts són extremadament eficients per extreure el fitxerelement mínim o més gran.



Passem ara a la pila mínima.

Pila mínima

L'emmagatzematge mínim és un arbre binari complet en què el valor de l'element arrel és inferior o igual a qualsevol de l'element fill.

Representació de la pila mínima

diferència entre sobrecarregar i anul·lar a Java

Arr [(i-1) / 2]: això retornarà el node pare.

Arr [(2 * i) + 1]: això retornarà el node fill esquerre.

Arr [(2 * i) + 2]: això tornarà el node fill adequat.

Hi ha certs mètodes de Min Heap:

  • insert (): S'afegeix una nova clau al final de l'arbre. En cas que la nova clau sigui més gran que la principal, llavors no cal fer res; en cas contrari, haurem de recórrer fins a configurar la propietat del munt.
  • getMin (): aquest mètode ajuda a retornar l'element arrel.
  • extractMin (): aquest mètode retorna el mínimelement.

Passant a la pila Max ara.

Pila màxima

L'emmagatzematge dinàmic màxim és un arbre binari complet en què el valor de l'element arrel és superior o igual a qualsevol de l'element fill.

L'emmagatzematge màxim també consta de diversos mètodes.

marc basat en dades en seleni
  • Insereix (): inserirà un element al munt.
  • Suprimeix () : suprimirà un element del munt.
  • FindMax (): trobarà l'element màxim del munt.
  • printHeap (): S'imprimirà el contingut de l'emmagatzematge dinàmic

Ara deixeu-me que us mostri la implementació de l'emmagatzematge dinàmic a través d'un diagrama i posteriorment d'un Javacodi.

Implementació de pila a Java

Diagrama:

Heap

El diagrama anterior mostra el muntatge binari a Java. Com heu après que hi ha dos munts: Min heap i Max heap, aquí teniu un diagrama:

Ara, passant al nostre següent segment, veurem com implementar un munt binari a Java.

Codi:

public class BinaryHeap {private static final int d = 2 private int [] heap private int heapSize / ** * Això inicialitzarà el nostre heap amb la mida predeterminada. * / public BinaryHeap (capacitat int) {heapSize = 0 heap = new int [capacitat + 1] Arrays.fill (heap, -1)} / ** * Això comprovarà si l’heap està buit o no * Complexitat: O ( 1) * / public boolean isEmpty () {return heapSize == 0} / ** * Això comprovarà si l'emmagatzematge dinàmic està ple o no * Complexitat: 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} / ** * Això inserirà un element nou a la pila * Complexitat: O (registre N) * Com a pitjor dels casos, hem de recórrer fins a l'arrel * / public void insert (int x) {if (isFull ()) llança una nova NoSuchElementException ('Heap està ple, no hi ha espai per inserir element nou ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Això suprimirà l'element de l'índex x * Complexitat: O (registre N) * * / public int delete (int x) {if (isEmpty ()) llança una nova NoSuchElementException ('Heap està buit, no hi ha cap element per suprimir') int key = heap [x] heap [x] = heap [heapSize -1] heapSize-- heapifyDown (x) retu clau rn} / ** * Aquest mètode s'utilitza per mantenir la propietat de l'emmagatzematge dinàmic mentre s'insereix un element. * * / 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} / ** * Aquest mètode s'utilitza per mantenir la propietat del heap mentre esborrava un element. * * / private void heapifyDown (int i) {int child int temp = heap [i] while (kthChild (i, 1)heap [rightChild]? leftChild: rightChild} / ** * Aquest mètode s'utilitza per imprimir tots els elements de l'heap * * / public void printHeap () {System.out.print ('nHeap =') per a (int i = 0 i

Amb això, arribem al final d’aquest article sobre Binary Heap a Java. Consulteu el per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món. El curs de formació i certificació Java J2EE i SOA d’Edureka està dissenyat per a estudiants i professionals que vulguin ser desenvolupador de Java. El curs està dissenyat per donar-vos un avantatge en la programació de Java i formar-vos tant per conceptes bàsics com avançats de Java, juntament amb diversos marcs Java com Hibernate i Spring.

Tens alguna pregunta? Si us plau, mencioneu-ho a la secció de comentaris d’aquest bloc “Java ArrayList” i us respondrem el més aviat possible.