Како користити Мак Хеап у Јави?

Kako Koristiti Mak Heap U Javi



Програмер може лако да преузме максималан елемент користећи „ Мак Хеап ” бинарно дрво. Као иу овом стаблу, максимални елемент се увек налази у горњем чвору стабла који је познат као „ корен ” чвор. Штавише, нуди ефикасно уметање и брисање елемената уз одржавање сортираног реда. Поред тога, „Мак Хеап“ може лако да обавља заказане послове на основу њиховог приоритета или других критеријума.

Овај чланак објашњава следећи садржај:







Како користити Мак Хеап у Јави?

А “ Мак Хеап ” се користи као основна структура података за имплементацију приоритетног реда. У реду приоритета, подаци се обрађују на основу њихове додељене вредности приоритета. Такође се може користити за ефикасно сортирање елемената података у опадајућем редоследу.



„Мак Хеап“ се може генерисати коришћењем две методе које су описане у примеру кодека у наставку:



Метод 1: Користите метод „макХеапифи()“.

макХеапифи() ” метод генерише „ Мак Хеап ” из постојеће колекције елемената трансформацијом структура података. Штавише, овај метод помаже у модификовању оригиналног низа на месту смањујући потребу за додатном меморијом.





На пример, посетите доњи код да бисте генерисали „ Мак Хеап ” користећи метод „макХеапифи()”:

импорт јава.утил.АрраиЛист;
импорт јава.утил.Цоллецтионс;
импорт јава.утил.Лист;

јавна класа МакХеапифиЕкам {
јавна статична празнина главна ( Низ [ ] аргс ) // стварање главног ( ) методом
{
Листа < Интегер > тестсЕле = нова листа низова <> ( ) ;
тестЕле.адд ( 5 ) ;
тестЕле.адд ( 3 ) ;
тестЕле.адд ( 8 ) ;
тестЕле.адд ( 2 ) ;
тестЕле.адд ( 1 ) ;
тестЕле.адд ( 7 ) ;
Систем.оут.принтлн ( 'Оригинална листа: ' + тестови ) ;
макХеапифи ( ТЕСТОВИ ) ;
Систем.оут.принтлн ( „Максимална генерисана хрпа:“ + тестови ) ;
}

приватна статичка воид макХеапифи ( Листа < Интегер > ТЕСТОВИ ) {
инт к = тестЕле.сизе ( ) ;
за ( инт и = к / 2 - 1 ; и > = 0 ; ја-- ) {
хеапифи ( тестсЕле, к, и ) ;
}
}

приватна статичка празнина хеапифи ( Листа < Интегер > тестсЕле, инт к, инт и ) {
инт већи = и;
инт лефтСиде = 2 * и + 1 ;
инт ригхтСиде = 2 * и + 2 ;
ако ( лева страна < к && тестЕле.гет ( лева страна ) > тестЕле.гет ( веће ) ) {
већи = лева страна;
}
ако ( десна страна < к && тестЕле.гет ( десна страна ) > тестЕле.гет ( веће ) ) {
већи = десна страна;
}
ако ( веће ! = и ) {
Цоллецтионс.свап ( тестсЕле, и, већи ) ;
хеапифи ( тестсЕле, к, већи ) ;
}
}
}



Објашњење горњег кода:

  • Прво, листа „ ТЕСТОВИ ” се иницијализује лажним елементима података у „ главни() ” и одштампан на конзоли.
  • Затим, листа „тестЕле“ се прослеђује функцији „макХеапифи()“, а затим се враћена листа приказује на конзоли.
  • Затим ' макХеапифи() ” метода је иницијализована и величина дате листе се преузима коришћењем „ величина() ” метод.
  • Затим користите „ за ” петља за постављање структуре хрпе и израчунавање позиције сваког чвора.
  • Сада користите „ хеапифи() ” и поставите позицију за „горњи”, „леви” и „десни” чвор тако што ћете доделити вредности променљивим „греатер”, „лефтСиде” и „ригхтСиде”.
  • Након тога, користите више „ ако ” условне изјаве за проверу да ли је „ лева страна ” чвор је већи од “ десна страна ” чвор и обрнуто. На крају, већа вредност се чува у „ веће ” чвор.
  • Коначно, нови „ веће ” вредност чвора се проверава са већ сачуваном вредношћу у „ веће ” променљива чвора. И „ свап() ” функција ради у складу са тим да постави највећу вредност у „ веће ' променљива.

Након завршетка фазе извршења:

Снимак показује да је максимална гомила генерисана помоћу „ макХеапифи() ” метод у Јави.

Метод 2: Користите метод „Цоллецтионс.реверсеОрдер()“.

Цоллецтионс.реверсеОрдер() ” метода нуди једноставан и концизан метод за генерисање „ Мак Хеап ” сортирањем колекције обрнутим редоследом. Ово омогућава поновну употребу кода и избегава потребу за имплементацијом прилагођеног „ хеапифи ” логика, као што је приказано у исечку кода испод:

импорт јава.утил.АрраиЛист;
импорт јава.утил.Цоллецтионс;
импорт јава.утил.Лист;

јавна класа РеверсеОрдерЕкампле {
јавна статична празнина главна ( Низ [ ] аргс ) // стварање главног ( ) методом
{
Листа < Интегер > тестсЕле = нова листа низова <> ( ) ;
тестЕле.адд ( 5 ) ;
тестЕле.адд ( 38 ) ;
тестЕле.адд ( 98 ) ;
тестЕле.адд ( 26 ) ;
тестЕле.адд ( 1 ) ;
тестЕле.адд ( 73 ) ;
Систем.оут.принтлн ( 'Оригинална листа: ' + тестови ) ;
Цоллецтионс.сорт ( тестсЕле, Цоллецтионс.реверсеОрдер ( ) ) ;
Систем.оут.принтлн ( „Максимална генерисана хрпа:“ + тестови ) ;
}
}

Објашњење горњег кода:

  • Прво увезите „ Низ листа ”, “ Збирке ' и ' Листа ” услужне програме у Јава датотеци.
  • Затим креирајте „ Листа ' назван ' ТЕСТОВИ ” и уметните лажне елементе у листу.
  • Затим, „ врста() ” метода се користи за сортирање елемената података у растућем редоследу и прослеђивање листе као параметра дуж „ Цоллецтионс.реверсеОрдер() ” метод. Ово чини сортирање „ ТЕСТОВИ ” листа обрнутим редоследом.

Након завршетка фазе извршења:

Снимак показује да се „Мак Хеап“ генерише и сортира помоћу методе „Цоллецтионс.реверсеОрдер()“.

Закључак

Креирањем „ Мак Хеап “, корисници могу да користе методе „макХеапифи()” и „Цоллецтионс.реверсеОрдер()”. Они управљају колекцијом елемената на начин који омогућава брз приступ максималном елементу и ефикасно одржавање сортираног поретка. То искључиво зависи од специфичних захтева и нивоа потребне контроле над процесом креирања гомиле.