Как использовать максимальную кучу в Java?

Kak Ispol Zovat Maksimal Nuu Kucu V Java



Программист может легко получить максимальный элемент, используя « Макс куча бинарное дерево. Как и в этом дереве, максимальный элемент всегда находится в верхнем узле дерева, известном как « корень узел. Кроме того, он предлагает эффективную вставку и удаление элементов при сохранении порядка сортировки. Кроме того, «Max Heap» может легко выполнять запланированные задания на основе их приоритета или других критериев.

В этой статье объясняется следующее содержание:







Как использовать максимальную кучу в Java?

А “ Макс куча ” используется в качестве базовой структуры данных для реализации приоритетной очереди. В очереди с приоритетом данные обрабатываются на основе назначенного им значения приоритета. Его также можно использовать для эффективной сортировки элементов данных в порядке убывания.



«Максимальная куча» может быть сгенерирована с использованием двух методов, которые описаны в примере кодека ниже:



Способ 1: используйте метод «maxHeapify()»

maxHeapify () » генерирует « Макс куча ” из существующей коллекции элементов путем преобразования структур данных. Более того, этот метод помогает модифицировать исходный массив на месте, уменьшая потребность в дополнительной памяти.





Например, посетите приведенный ниже код, чтобы сгенерировать « Макс куча », используя метод «maxHeapify()»:

импортировать java.util.ArrayList;
импортировать java.util.Collections;
импортировать java.util.List;

открытый класс MaxHeapifyExam {
публичная статическая пустота главная ( Нить [ ] аргументы ) // создание основных ( ) метод
{
Список < Целое число > testEle = новый ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Исходный список:' + тесты ) ;
maxHeapify ( ИСПЫТАНИЯ ) ;
System.out.println ( «Максимальная сгенерированная куча:» + тесты ) ;
}

приватная статическая пустота maxHeapify ( Список < Целое число > ИСПЫТАНИЯ ) {
int k = testEle.size ( ) ;
для ( интервал я = к / 2 - 1 ; я > '=' 0 ; я-- ) {
нагромождать ( тестыЭле, к, я ) ;
}
}

частная статическая пустота ( Список < Целое число > тестыEle, int k, int i ) {
интервал больше = я;
int левая сторона = 2 * я + 1 ;
интервал справа = 2 * я + 2 ;
если ( левая сторона < к && testEle.get ( левая сторона ) > testEle.get ( больший ) ) {
больше = левая сторона;
}
если ( правая сторона < к && testEle.get ( правая сторона ) > testEle.get ( больший ) ) {
больше = правая сторона;
}
если ( больший ! = я ) {
Коллекции.swap ( тестыЭле, я, больше ) ;
нагромождать ( тестыЭле, к, больше ) ;
}
}
}



Объяснение приведенного выше кода:

  • Во-первых, список « ИСПЫТАНИЯ » инициализируется фиктивными элементами данных в « основной() ” и печатается на консоли.
  • Затем список «testEle» передается функции «maxHeapify()», а затем возвращенный список отображается на консоли.
  • Затем « maxHeapify () », инициализируется метод, и размер предоставленного списка извлекается с использованием « размер() метод.
  • Далее используйте « для », чтобы установить структуру кучи и вычислить положение каждого узла.
  • Теперь используйте « нагромождать() » и задайте положение для «верхнего», «левого» и «правого» узлов, присвоив значения переменным «greater», «leftSide» и «rightSide» соответственно.
  • После этого используйте несколько « если условные операторы, чтобы проверить, является ли « левая сторона узел больше, чем узел « правая сторона узел и наоборот. В конце концов, большее значение сохраняется в « больший узел.
  • Наконец, новый « больший » значение узла сверяется с уже сохраненным значением в « больший ” переменная узла. И « менять() ” работает соответственно, чтобы установить наибольшее значение в “ больший ' переменная.

После окончания фазы исполнения:

Снимок показывает, что максимальная куча создается с использованием « maxHeapify () ” в Java.

Способ 2: используйте метод «Collections.reverseOrder()»

Коллекции.reverseOrder() ” предлагает простой и лаконичный способ создания “ Макс куча », отсортировав коллекцию в обратном порядке. Это позволяет повторно использовать код и избавляет от необходимости реализовывать пользовательские « нагромождать логика, как показано в приведенном ниже фрагменте кода:

импортировать java.util.ArrayList;
импортировать java.util.Collections;
импортировать java.util.List;

открытый класс ReverseOrderExample {
публичная статическая пустота главная ( Нить [ ] аргументы ) // создание основных ( ) метод
{
Список < Целое число > testEle = новый ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Исходный список:' + тесты ) ;
Коллекции.sort ( testEle, Collections.reverseOrder ( ) ) ;
System.out.println ( «Максимальная сгенерированная куча:» + тесты ) ;
}
}

Объяснение приведенного выше кода:

  • Сначала импортируйте « ArrayList », « Коллекции ' и ' Список Утилиты в файле Java.
  • Затем создайте « Список 'по имени' ИСПЫТАНИЯ » и вставьте в список фиктивные элементы.
  • Далее « Сортировать() » используется для сортировки элементов данных в порядке возрастания и передачи списка в качестве параметра по « Коллекции.reverseOrder() метод. Это делает сортировку « ИСПЫТАНИЯ » в обратном порядке.

После окончания фазы исполнения:

Снимок показывает, что «Max Heap» создается и сортируется с использованием метода «Collections.reverseOrder()».

Заключение

Создав « Макс куча », пользователи могут использовать методы «maxHeapify()» и «Collections.reverseOrder()». Они управляют набором элементов таким образом, чтобы обеспечить быстрый доступ к максимальному количеству элементов и эффективное поддержание порядка сортировки. Это зависит исключительно от конкретных требований и уровня контроля над процессом создания кучи.