Java'da Max Heap Nasıl Kullanılır?

Java Da Max Heap Nasil Kullanilir



Programcı, ' kullanarak maksimum öğeyi kolayca alabilir. Maksimum Yığın ' ikili ağaç. Bu ağaçta olduğu gibi, maksimum eleman her zaman ağacın '' olarak bilinen en üst düğümünde bulunur. kök ” düğüm. Ayrıca, sıralama düzenini korurken öğelerin verimli bir şekilde eklenmesini ve silinmesini sağlar. Ek olarak, bir 'Maks Yığın', zamanlanmış işleri önceliklerine veya diğer kriterlere göre kolayca gerçekleştirebilir.

Bu makale aşağıdaki içeriği açıklamaktadır:







Java'da Max Heap Nasıl Kullanılır?

A ' Maksimum Yığın ”, bir öncelik sırası uygulamak için temel veri yapısı olarak kullanılır. Öncelik kuyruğunda, veriler atanan öncelik değerlerine göre işlenir. Veri öğelerini azalan düzende verimli bir şekilde sıralamak için de kullanılabilir.



'Max Heap', aşağıdaki kodek örneğinde açıklanan iki yöntem kullanılarak oluşturulabilir:



Yöntem 1: 'maxHeapify()' Yöntemini kullanın

maxHeapify() ” yöntemi bir “ üretir Maksimum Yığın ” veri yapılarını dönüştürerek mevcut bir öğe koleksiyonundan. Ayrıca, bu yöntem orijinal dizinin yerinde değiştirilmesine yardımcı olur ve ek bellek ihtiyacını azaltır.





Örneğin, bir “oluşturmak için aşağıdaki kodu ziyaret edin. Maksimum Yığın ” “maxHeapify()” yöntemini kullanarak:

java.util.ArrayList'i içe aktarın;
java.util.Collections'ı içe aktarın;
java.util.List'i içe aktarın;

genel sınıf MaxHeapifyExam {
genel statik geçersiz ana ( Sicim [ ] argümanlar ) // ana oluşturma ( ) yöntem
{
Liste < tamsayı > testlerEle = yeni ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Orijinal Liste: ' + testler ) ;
maxHeapify ( TESTLER ) ;
System.out.println ( 'Maksimum Yığın Oluşturuldu: ' + testler ) ;
}

özel statik boşluk maxHeapify ( Liste < tamsayı > TESTLER ) {
int k = testEle.size ( ) ;
için ( int ben = k / 2 - 1 ; Ben > = 0 ; Ben-- ) {
yığmak ( testlerEle, k, ben ) ;
}
}

özel statik boşluk yığını ( Liste < tamsayı > testlerEle, int k, int i ) {
int büyük = i;
int sol Taraf = 2 * ben + 1 ;
int sağ Taraf = 2 * ben + 2 ;
eğer ( Sol Taraf < k && testEle.get ( Sol Taraf ) > testEle.get ( daha büyük ) ) {
daha büyük = leftSide;
}
eğer ( Sağ Taraf < k && testEle.get ( Sağ Taraf ) > testEle.get ( daha büyük ) ) {
daha büyük = sağ Taraf;
}
eğer ( daha büyük ! = ben ) {
Koleksiyonlar.takas ( testlerEle, i, daha büyük ) ;
yığmak ( testlerEle, k, daha büyük ) ;
}
}
}



Yukarıdaki kodun açıklaması:

  • Önce liste “ TESTLER ”, “ içindeki kukla veri öğeleriyle başlatıldı. ana() ” yöntemiyle yazılır ve konsola basılır.
  • Ardından, “testEle” listesi “maxHeapify()” işlevine geçirilir ve ardından döndürülen Liste konsolda görüntülenir.
  • Sonra ' maxHeapify() ” yöntemi başlatılır ve sağlanan listenin boyutu “ kullanılarak alınır. boyut() ' yöntem.
  • Ardından, “ için Yığın yapısını ayarlamak ve her bir düğümün konumunu hesaplamak için ” döngüsü.
  • Şimdi, “ yığmak() ” yöntemini seçin ve sırasıyla “granter”, “leftSide” ve “rightSide” değişkenlerine değerler atayarak “top”, “left” ve “right” düğümlerinin konumunu ayarlayın.
  • Bundan sonra, birden çok ' eğer ' olup olmadığını kontrol etmek için koşullu ifadeler Sol Taraf ” düğümü “den daha büyük Sağ Taraf ” düğümü ve tersi. Sonunda, daha büyük olan değer “ daha büyük ” düğüm.
  • Son olarak, yeni “ daha büyük ” düğüm değeri, “ içinde önceden saklanan değer ile kontrol edilir. daha büyük ” düğüm değişkeni. Ve ' takas() ” fonksiyonu, “ içindeki en büyük değeri ayarlamak için buna göre çalışır. daha büyük ” değişken.

Yürütme aşamasının bitiminden sonra:

Anlık görüntü, maksimum yığının ' kullanılarak oluşturulduğunu gösterir. maxHeapify() Java'da ” yöntemi.

Yöntem 2: 'Collections.reverseOrder()' Yöntemini kullanın

Collections.reverseOrder() ” yöntemi, bir “ oluşturmak için basit ve özlü bir yöntem sunar. Maksimum Yığın koleksiyonu ters sırada sıralayarak. Bu, kodun yeniden kullanılmasına izin verir ve özel ' yığmak ” mantığı, aşağıdaki kod parçacığında gösterildiği gibi:

java.util.ArrayList'i içe aktarın;
java.util.Collections'ı içe aktarın;
java.util.List'i içe aktarın;

genel sınıf ReverseOrderExample {
genel statik geçersiz ana ( Sicim [ ] argümanlar ) // ana oluşturma ( ) yöntem
{
Liste < tamsayı > testlerEle = yeni ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Orijinal Liste: ' + testler ) ;
Koleksiyonlar.sort ( testlerEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'Maksimum Yığın Oluşturuldu: ' + testler ) ;
}
}

Yukarıdaki kodun açıklaması:

  • İlk olarak, “ Dizi Listesi ”, “ Koleksiyonlar ' Ve ' Liste ” Java dosyasındaki yardımcı programlar.
  • Ardından, bir 'oluşturun Liste ”adlı” TESTLER ” ve listeye sahte öğeler ekleyin.
  • Sonra, “ düzenlemek() ” yöntemi, veri öğelerini artan düzende sıralamak ve listeyi “ boyunca bir parametre olarak geçirmek için kullanılır. Collections.reverseOrder() ' yöntem. Bu, “ sıralamasını yapar TESTLER ” listesi ters sırada.

Yürütme aşamasının bitiminden sonra:

Anlık görüntü, 'Maks Yığın'ın 'Collections.reverseOrder()' yöntemi kullanılarak oluşturulduğunu ve sıralandığını gösterir.

Çözüm

“ yaratarak Maksimum Yığın ”, kullanıcılar “maxHeapify()” ve “Collections.reverseOrder()” yöntemlerini kullanabilir. Bir öğe koleksiyonunu, maksimum öğeye hızlı erişime ve sıralanmış bir düzenin verimli bir şekilde korunmasına izin verecek şekilde yönetirler. Yalnızca belirli gereksinimlere ve yığın oluşturma işlemi üzerinde gereken denetim düzeyine bağlıdır.