Fahami Cara Melaksanakan Binary Heap di Jawa



Artikel ini akan memberi anda pengetahuan yang terperinci dan komprehensif tentang bagaimana menerapkan timbunan binari di java dengan contoh.

Artikel ini akan memberi anda gambaran keseluruhan lengkap mengenai cara kerja timbunan dan kemudian kami akan belajar menerapkan Binary Heap di Java.

Berikut adalah agenda untuk artikel ini:





  1. Apakah jenis timbunan?
  2. Tumpukan Maksimum
  3. Tumpukan Min
  4. Pelaksanaan timbunan di Jawa
    • Gambar rajah
    • Kod

Mari kita mulakan!

Apakah jenis timbunan?

Heap pada dasarnya adalah struktur data berasaskan pokok. Ia mempunyai nod. Node terdiri daripada unsur-unsur tertentu. Setiap nod mengandungi satu elemen.



Nod mungkin mempunyai anak. Sekiranya tidak ada anak, ia dipanggil Daun.

Terdapat dua peraturan yang harus dipatuhi:

  • Nilai setiap nod mesti kurang atau sama dengan semua nilai yang disimpan pada anak-anaknya.
  • Ia mempunyai ketinggian paling sedikit.

Tumpukan sangat berkesan dalam mengekstrakunsur paling sedikit atau terhebat.



Mari beralih ke timbunan min sekarang!

Tumpukan Min

Min timbunan adalah pokok binari lengkap di mana nilai unsur akar kurang daripada atau sama dengan salah satu elemen anak.

Perwakilan timbunan min

Arr [(i-1) / 2]: ini akan mengembalikan nod induk.

java apa itu pemboleh ubah contoh

Arr [(2 * i) + 1]: ini akan mengembalikan nod anak kiri.

Arr [(2 * i) + 2]: ini akan mengembalikan nod anak yang betul.

Terdapat kaedah tertentu Min Heap:

  • masukkan (): Kunci baru di hujung pokok ditambah. Sekiranya kunci baru lebih besar daripada ibu bapa, maka tidak perlu melakukan apa-apa, jika tidak, kita harus melintasi untuk menyiapkan harta timbunan.
  • getMin (): kaedah ini membantu mengembalikan elemen akar.
  • ekstrakMin (): kaedah ini mengembalikan minimumunsur.

Beralih ke timbunan Max sekarang.

Timbunan maksimum

Tumpukan maksimum adalah pokok binari lengkap di mana nilai unsur akar lebih besar daripada atau sama dengan salah satu elemen turunan.

Tumpukan maksimum juga terdiri daripada beberapa kaedah!

  • Masukkan (): ia akan memasukkan unsur di timbunan.
  • Padamkan () : ia akan menghapus elemen dari timbunan.
  • FindMax (): ia akan menemui unsur maksimum dari timbunan.
  • printHeap (): Ia akan mencetak isi timbunan

Sekarang izinkan saya menunjukkan kepada anda implementasi timbunan melalui diagram dan kemudian Javakod.

Pelaksanaan timbunan di Jawa

Gambar rajah:

Heap

Rajah di atas menunjukkan timbunan binari di Jawa. Seperti yang anda ketahui bahawa terdapat dua timbunan: timbunan minimum dan timbunan maksimum, berikut adalah rajah:

c ++ susun atur int

Sekarang, beralih ke segmen seterusnya, kita akan melihat bagaimana menerapkan timbunan biner di Java.

Kod:

kelas awam BinaryHeap {private static final int d = 2 private int [] heap int int heapSize / ** * Ini akan memulakan timbunan kami dengan ukuran lalai. * / public BinaryHeap (kapasiti int) {heapSize = 0 timbunan = int baru [kapasiti + 1] Arrays.fill (heap, -1)} / ** * Ini akan memeriksa sama ada timbunan itu kosong atau tidak * Kerumitan: O ( 1) * / boolean awam isEmpty () {return heapSize == 0} / ** * Ini akan memeriksa sama ada timbunan penuh atau tidak * Kerumitan: O (1) * / awam boolean isFull () {return heapSize == timbunan .length} induk int peribadi (int i) {return (i-1) / d} int kthChild (int i, int k) {return d * i + k} / ** * Ini akan memasukkan elemen baru ke dalam timbunan * Kerumitan: O (log N) * Sebagai senario terburuk, kita perlu melintasi sehingga root * / public void insert (int x) {if (isFull ()) membuang NoSuchElementException baru ('Heap is full, No space to insert elemen baru ') heap [heapSize ++] = x heapifyUp (heapSize-1)} / ** * Ini akan memadamkan elemen pada indeks x * Kerumitan: O (log N) * * / public int delete (int x) {if (isEmpty ()) buang NoSuchElementException baru ('Heap is kosong, No element to delete') int key = heap [x] heap [x] = heap [heapSize -1] heapSize-- heapifyDown (x) retu kunci rn} / ** * Kaedah ini digunakan untuk mengekalkan harta timbunan sambil memasukkan elemen. * * / private void heapifyUp (int i) {int temp = heap [i] manakala (i> 0 && temp> heap [induk (i)]) {heap [i] = timbunan [induk (i)] i = induk (i)} timbunan [i] = temp} / ** * Kaedah ini digunakan untuk mengekalkan harta timbunan sambil menghapus elemen. * * / private void heapifyDown (int i) {int child int temp = heap [i] sementara (kthChild (i, 1)timbunan [rightChild]? leftChild: rightChild} / ** * Kaedah ini digunakan untuk mencetak semua elemen timbunan * * / public void printHeap () {System.out.print ('nHeap =') untuk (int i = 0 i

Dengan ini, kita sampai pada akhir artikel ini mengenai Binary Heap di Jawa. Lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk pelajar dan profesional yang ingin menjadi Pembangun Java. Kursus ini dirancang untuk memberi Anda awal dalam pengaturcaraan Java dan melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog 'Java ArrayList' ini dan kami akan menghubungi anda secepat mungkin.