Zrozum, jak zaimplementować stertę binarną w Javie



W tym artykule znajdziesz szczegółową i wszechstronną wiedzę na temat implementacji stosu binarnego w Javie wraz z przykładami.

W tym artykule znajdziesz pełny przegląd działania sortowania na stosie, a później nauczymy się implementować binarną stertę w Javie.

Oto program tego artykułu:





  1. Co to jest sortowanie na stosie?
  2. Max Heap
  3. Min Heap
  4. Implementacja sterty w Javie
    • Diagram
    • Kod

Zaczynajmy!

Co to jest sortowanie na stosie?

Heap to w zasadzie struktura danych oparta na drzewie. Ma węzły. Węzeł składa się z pewnych elementów. Każdy węzeł zawiera jeden element.



Węzły mogą mieć dzieci. Jeśli nie ma dzieci, nazywa się to Liściem.

co to jest programista blockchain

Należy przestrzegać dwóch zasad:

  • Wartość każdego węzła musi być mniejsza lub równa wszystkim wartościom przechowywanym w jego elementach potomnych.
  • Ma najmniejszą możliwą wysokość.

Sterty są niezwykle wydajne w wydobywaniunajmniejszy lub największy element.



Przejdźmy teraz do sterty minimalnej!

Min Heap

Sterta minimalna to kompletne drzewo binarne, w którym wartość elementu głównego jest mniejsza lub równa dowolnemu z elementów potomnych.

Reprezentacja sterty min

Arr [(i-1) / 2]: to zwróci węzeł nadrzędny.

Arr [(2 * i) + 1]: to zwróci lewy węzeł potomny.

Arr [(2 * i) + 2]: to zwróci prawy węzeł potomny.

Istnieją pewne metody Min Heap:

  • wstawić(): Dodawany jest nowy klucz na końcu drzewa. W przypadku, gdy nowy klucz jest większy niż rodzic, nie ma potrzeby nic robić, w przeciwnym razie musimy przejść do góry, aby ustawić właściwość sterty.
  • getMin (): ta metoda pomaga zwrócić element główny.
  • extractMin (): ta metoda zwraca minimumelement.

Przechodzę teraz do Max heap.

tableau jak stworzyć zestaw

Max sterta

Sterta maksymalna to kompletne drzewo binarne, w którym wartość elementu głównego jest większa lub równa dowolnemu elementowi podrzędnemu.

Max heap również składa się z kilku metod!

  • Wstaw (): wstawi element w stercie.
  • Usunąć() : usunie element ze sterty.
  • FindMax (): znajdzie maksymalny element ze sterty.
  • printHeap (): Drukuje zawartość sterty

Teraz pokażę implementację sterty za pomocą diagramu, a później Javakod.

Implementacja sterty w Javie

Diagram:

Heap

Powyższy diagram przedstawia stertę binarną w Javie. Jak już wiesz, że istnieją dwie sterty: sterta minimalna i sterta maksymalna, oto diagram:

Teraz, przechodząc do następnego segmentu, zobaczymy, jak zaimplementować stertę binarną w Javie.

Kod:

public class BinaryHeap {private static final int d = 2 private int [] heap private int heapSize / ** * To zainicjuje naszą stertę z domyślnym rozmiarem. * / public BinaryHeap (int capacity) {heapSize = 0 heap = new int [capacity + 1] Arrays.fill (heap, -1)} / ** * Spowoduje to sprawdzenie, czy sterta jest pusta, czy nie * Złożoność: O ( 1) * / public boolean isEmpty () {return heapSize == 0} / ** * To sprawdzi, czy sterta jest pełna czy nie * Złożoność: 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} / ** * To wstawi nowy element do sterty * Złożoność: O (log N) * W najgorszym przypadku musimy przejść do katalogu głównego * / public void insert (int x) {if (isFull ()) wyrzucić nowy NoSuchElementException ('Sterta jest pełna, Brak miejsca do wstawienia new element ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Spowoduje to usunięcie elementu o indeksie x * Złożoność: 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 rn key} / ** * Ta metoda służy do utrzymywania właściwości sterty podczas wstawiania elementu. * * / 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} / ** * Ta metoda służy do zachowania właściwości sterty podczas usuwania elementu. * * / private void heapifyDown (int i) {int child int temp = heap [i] while (kthChild (i, 1)heap [rightChild]? leftChild: rightChild} / ** * Ta metoda służy do drukowania wszystkich elementów sterty * * / public void printHeap () {System.out.print ('nHeap =') for (int i = 0 i

Tym samym dochodzimy do końca tego artykułu na temat stosu binarnego w Javie. Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie i certyfikacja J2EE i SOA firmy Edureka jest przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java. Kurs ma na celu zapewnienie przewagi w programowaniu w języku Java i przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.

Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu „Java ArrayList”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.