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:
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:
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.