Bagaimana Cara Menggunakan Max Heap di Java?

Bagaimana Cara Menggunakan Max Heap Di Java



Pemrogram dapat dengan mudah mengambil elemen maksimum dengan memanfaatkan ' Tumpukan Maks ” pohon biner. Seperti pada pohon ini, elemen maksimum selalu berada pada node paling atas dari pohon yang dikenal sebagai “ akar simpul. Selain itu, ia menawarkan penyisipan dan penghapusan elemen yang efisien sambil mempertahankan urutan yang diurutkan. Selain itu, 'Max Heap' dapat dengan mudah melakukan pekerjaan terjadwal berdasarkan prioritas atau kriteria lainnya.

Artikel ini menjelaskan konten berikut:







Bagaimana Cara Menggunakan Max Heap di Java?

A ' Tumpukan Maks ” digunakan sebagai struktur data dasar untuk mengimplementasikan antrian prioritas. Dalam antrian prioritas, data diproses berdasarkan nilai prioritas yang ditetapkan. Itu juga dapat digunakan untuk mengurutkan elemen data dalam urutan menurun, secara efisien.



'Max Heap' dapat dihasilkan menggunakan dua metode yang dijelaskan di sepanjang contoh codec di bawah ini:



Metode 1: Gunakan Metode “maxHeapify()”.

maxHeapify() ” metode menghasilkan “ Tumpukan Maks ” dari kumpulan elemen yang ada dengan mengubah struktur data. Selain itu, metode ini membantu dalam memodifikasi array asli di tempat mengurangi kebutuhan memori tambahan.





Misalnya, kunjungi kode di bawah ini untuk menghasilkan “ Tumpukan Maks ” menggunakan metode “maxHeapify()”:

impor java.util.ArrayList;
impor java.util.Koleksi;
impor java.util.List;

MaxHeapifyExam kelas publik {
public void utama statis ( Rangkaian [ ] argumen ) // penciptaan utama ( ) metode
{
Daftar < Bilangan bulat > testEle = ArrayList baru <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Daftar Asli:' + tesEle ) ;
maxHeapify ( UJI ) ;
System.out.println ( 'Tumpukan Maks yang Dihasilkan:' + tesEle ) ;
}

maxHeapify kekosongan statis pribadi ( Daftar < Bilangan bulat > UJI ) {
int k = testEle.size ( ) ;
untuk ( int i = k / 2 - 1 ; Saya > = 0 ; Saya-- ) {
menumpuk ( tesEle, k, i ) ;
}
}

tumpukan kekosongan statis pribadi ( Daftar < Bilangan bulat > tesEle, int k, int i ) {
int lebih besar = i;
int sisi kiri = 2 * saya + 1 ;
int Sisi kanan = 2 * saya + 2 ;
jika ( sisi kiri < k && testEle.get ( sisi kiri ) > testEle.get ( lebih besar ) ) {
lebih besar = sisi kiri;
}
jika ( sisi kanan < k && testEle.get ( sisi kanan ) > testEle.get ( lebih besar ) ) {
lebih besar = Sisi kanan;
}
jika ( lebih besar ! = saya ) {
Koleksi.tukar ( testEle, i, lebih besar ) ;
menumpuk ( tesEle, k, lebih besar ) ;
}
}
}



Penjelasan dari kode di atas:

  • Pertama, daftar “ UJI ” diinisialisasi dengan elemen data dummy di kolom “ utama() ” dan dicetak di konsol.
  • Selanjutnya, daftar 'testEle' diteruskan ke fungsi 'maxHeapify()', dan kemudian Daftar yang dikembalikan ditampilkan di konsol.
  • Kemudian, “ maxHeapify() ” Metode ini diinisialisasi dan ukuran daftar yang disediakan diambil dengan menggunakan tombol “ ukuran() ' metode.
  • Selanjutnya, gunakan “ untuk ” loop untuk mengatur struktur heap dan menghitung posisi setiap node.
  • Sekarang, gunakan ' menumpuk() ” dan atur posisi untuk node 'atas', 'kiri', dan 'kanan' dengan menetapkan nilai masing-masing ke variabel 'lebih besar', 'Sisi kiri', dan 'Sisi kanan'.
  • Setelah itu, gunakan beberapa “ jika ” pernyataan bersyarat untuk memeriksa apakah “ sisi kiri simpul ” lebih besar dari simpul ” sisi kanan simpul dan sebaliknya. Pada akhirnya, nilai yang lebih besar disimpan di “ lebih besar simpul.
  • Akhirnya, baru “ lebih besar ” nilai simpul diperiksa dengan nilai yang sudah disimpan di “ lebih besar ” variabel simpul. Dan “ menukar() ” berfungsi sesuai untuk menetapkan nilai terbesar di “ lebih besar ' variabel.

Setelah akhir fase eksekusi:

Cuplikan menunjukkan tumpukan maksimum dihasilkan menggunakan ' maxHeapify() ” metode di Jawa.

Metode 2: Gunakan Metode “Collections.reverseOrder()”.

Collections.reverseOrder() ” Metode menawarkan metode yang sederhana dan ringkas untuk menghasilkan ' Tumpukan Maks ” dengan menyortir koleksi dalam urutan terbalik. Ini memungkinkan kode untuk digunakan kembali dan menghindari kebutuhan untuk mengimplementasikan kebiasaan “ menumpuk ”, seperti yang ditunjukkan pada cuplikan kode di bawah ini:

impor java.util.ArrayList;
impor java.util.Koleksi;
impor java.util.List;

ReverseOrderExample kelas publik {
public void utama statis ( Rangkaian [ ] argumen ) // penciptaan utama ( ) metode
{
Daftar < Bilangan bulat > testEle = ArrayList baru <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Daftar Asli:' + tes ) ;
Koleksi.sort ( testEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Tumpukan Maks yang Dihasilkan:' + tes ) ;
}
}

Penjelasan dari kode di atas:

  • Pertama, impor “ ArrayList ”, “ Koleksi ' Dan ' Daftar ” utilitas dalam file Java.
  • Kemudian, buat ' Daftar ' bernama ' UJI ” dan masukkan elemen boneka ke dalam daftar.
  • Selanjutnya, “ menyortir() ” metode digunakan untuk mengurutkan elemen data dalam urutan menaik dan meneruskan daftar sebagai parameter di sepanjang “ Collections.reverseOrder() ' metode. Ini membuat penyortiran ' UJI ” daftar dalam urutan terbalik.

Setelah akhir fase eksekusi:

Cuplikan menunjukkan bahwa 'Max Heap' dibuat dan diurutkan menggunakan metode 'Collections.reverseOrder()'.

Kesimpulan

Dengan membuat “ Tumpukan Maks ”, pengguna dapat menggunakan metode “maxHeapify()” dan “Collections.reverseOrder()”. Mereka mengelola kumpulan elemen dengan cara yang memungkinkan akses cepat ke elemen maksimum dan pemeliharaan yang efisien dari urutan yang diurutkan. Itu semata-mata bergantung pada persyaratan khusus dan tingkat kontrol yang diperlukan selama proses pembuatan heap.