Pochopte, jak implementovat binární haldu v Javě



Tento článek vám poskytne podrobné a komplexní znalosti o tom, jak implementovat binární hromadu v jazyce Java s příklady.

Tento článek vám poskytne kompletní přehled o fungování haldy a později se naučíme implementovat binární haldu v Javě.

Tady je agenda tohoto článku:





převést dvojité na celé číslo java
  1. Co je to halda?
  2. Max. Hromada
  3. Min. Halda
  4. Haldy implementace v Javě
    • Diagram
    • Kód

Pojďme začít!

Co je to halda?

Halda je v podstatě stromová datová struktura. Má uzly. Uzel se skládá z určitých prvků. Každý uzel obsahuje jeden prvek.



Uzly mohou mít děti. Pokud v případě, že nejsou žádné děti, nazývá se to List.

Je třeba dodržovat dvě pravidla:

  • Hodnota každého uzlu musí být menší nebo rovna všem hodnotám uloženým v jeho podřízených prvcích.
  • Má nejnižší možnou výšku.

Hromady jsou při extrakci extrémně účinnénejmenší nebo největší prvek.



Pojďme nyní na hromadu min!

Min. Halda

Min halda je kompletní binární strom, ve kterém je hodnota kořenového prvku menší nebo rovna jakémukoli z podřízeného prvku.

Znázornění minimální hromady

Arr [(i-1) / 2]: toto vrátí nadřazený uzel.

Arr [(2 * i) + 1]: toto vrátí levý podřízený uzel.

Arr [(2 * i) + 2]: toto vrátí pravý podřízený uzel.

Existují určité metody Min Heap:

  • vložit(): Přidá se nový klíč na konec stromu. V případě, že nový klíč je větší než nadřazený, pak není třeba nic dělat, jinak musíme projít nahoru, abychom nastavili vlastnost haldy.
  • getMin (): tato metoda pomáhá vrátit kořenový prvek.
  • extractMin (): tato metoda vrací minimumživel.

Nyní přejdeme k haldě Max.

Max. Hromada

Max. Halda je kompletní binární strom, ve kterém je hodnota kořenového prvku větší nebo rovna kterémukoli z podřízeného prvku.

Max hromada se také skládá z několika metod!

  • Vložit (): vloží prvek do haldy.
  • Vymazat() : odstraní prvek z haldy.
  • FindMax (): najde z haldy maximální prvek.
  • printHeap (): Vytiskne obsah haldy

Nyní vám ukážu implementaci haldy prostřednictvím diagramu a později Javakód.

Haldy implementace v Javě

Diagram:

Heap

Výše uvedený diagram ukazuje binární haldu v Javě. Jak jste se dozvěděli, že existují dvě hromady: Min haldy a Max haldy, zde je diagram:

Nyní přejdeme k dalšímu segmentu a uvidíme, jak implementovat binární haldu v Javě.

Kód:

public class BinaryHeap {private static final int d = 2 private int [] halda private int heapSize / ** * Tím se inicializuje naše halda s výchozí velikostí. * / public BinaryHeap (int kapacita) {heapSize = 0 heap = new int [capacity + 1] Arrays.fill (heap, -1)} / ** * Toto zkontroluje, zda je halda prázdná nebo ne * Složitost: O ( 1) * / public boolean isEmpty () {return heapSize == 0} / ** * Tím se zkontroluje, zda je halda plná nebo ne * Složitost: O (1) * / public boolean isFull () {return heapSize == halda .length} private int parent (int i) {return (i-1) / d} private int kthChild (int i, int k) {return d * i + k} / ** * This will insert new element in to heap * Složitost: O (log N) * Jako nejhorší scénář musíme projít kořenem * / public void insert (int x) {if (isFull ()) throw new NoSuchElementException ('Heap is full, No space to insert nový prvek ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Tím se smaže prvek v indexu x * Složitost: O (log N) * * / public int delete (int x) {if (isEmpty ()) throw new NoSuchElementException ('Heap is empty, No element to delete') int key = heap [x] heap [x] = heap [heapSize -1] heapSize-- heapifyDown (x) retu klíč rn} / ** * Tato metoda slouží k udržení vlastnosti haldy při vkládání prvku. * * / private void heapifyUp (int i) {int temp = heap [i] while (i> 0 && temp> heap [parent (i)]) {heap [i] = heap [parent (i)] i = parent (i)} halda [i] = teplota} / ** * Tato metoda slouží k udržení vlastnosti haldy při odstraňování prvku. * * / private void heapifyDown (int i) {int child int temp = heap [i] while (kthChild (i, 1)halda [rightChild]? leftChild: rightChild} / ** * Tato metoda slouží k tisku všech prvků haldy * * / public void printHeap () {System.out.print ('nHeap =') pro (int i = 0 i

S tímto se dostáváme na konec tohoto článku o Binary Heap v Javě. Podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů rozložených po celém světě. Školicí a certifikační kurz Edureka Java J2EE a SOA je určen pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování v Javě a naučil vás základní i pokročilé koncepty Javy spolu s různými rámci Java, jako je Hibernate & Spring.

java system.exit (0)

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu „Java ArrayList“ a my se vám ozveme co nejdříve.