O programador pode recuperar facilmente o elemento máximo utilizando o botão “ pilha máxima ” árvore binária. Como nesta árvore, o elemento máximo sempre reside no nó superior da árvore que é conhecido como “ raiz ' nó. Além disso, oferece inserção e exclusão eficientes de elementos enquanto mantém a ordem de classificação. Além disso, um “Max Heap” pode facilmente executar trabalhos agendados com base em sua prioridade ou outros critérios.
Este artigo explica o seguinte conteúdo:
- Como usar o heap máximo em Java?
- Use o método “maxHeapify ()”
- Use o método “Collections.reverseOrder()”
Como usar o heap máximo em Java?
A ' pilha máxima ” é utilizado como a estrutura de dados subjacente para implementar uma fila de prioridade. Na fila de prioridade, os dados são processados com base no valor de prioridade atribuído. Também pode ser utilizado para classificar os elementos de dados em ordem decrescente, de forma eficiente.
O “Max Heap” pode ser gerado usando dois métodos que são descritos ao longo do exemplo de codec abaixo:
Método 1: Use o método “maxHeapify ()”
O ' maxHeapify() ” método gera um “ pilha máxima ” de uma coleção existente de elementos, transformando estruturas de dados. Além disso, esse método ajuda a modificar o array original no local, reduzindo a necessidade de memória adicional.
Por exemplo, visite o código abaixo para gerar um “ pilha máxima ” usando o método “maxHeapify()”:
importar java.util.ArrayList;importar java.util.Collections;
importar java.util.List;
classe pública MaxHeapifyExam {
public static void main ( Corda [ ] argumentos ) // criação de principal ( ) método
{
Lista < inteiro > testesEle = new ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 3 ) ;
testEle.add ( 8 ) ;
testEle.add ( 2 ) ;
testEle.add ( 1 ) ;
testEle.add ( 7 ) ;
System.out.println ( 'Lista Original: ' + testesEle ) ;
maxHeapify ( TESTE ) ;
System.out.println ( 'A pilha máxima gerada: ' + testesEle ) ;
}
private static void maxHeapify ( Lista < inteiro > TESTE ) {
int k = testEle.size ( ) ;
para ( int i = k / 2 - 1 ; eu > = 0 ; eu-- ) {
amontoar ( testaEle, k, i ) ;
}
}
heapify vazio estático privado ( Lista < inteiro > testesEle, int k, int i ) {
int maior = i;
int Ladoesquerdo = 2 * eu + 1 ;
int lado direito = 2 * eu + 2 ;
se ( lado esquerdo < k && testEle.get ( lado esquerdo ) > testEle.get ( maior ) ) {
maior = lado esquerdo;
}
se ( lado direito < k && testEle.get ( lado direito ) > testEle.get ( maior ) ) {
maior = lado direito;
}
se ( maior ! = eu ) {
Coleções.trocar ( testesEle, i, maior ) ;
amontoar ( testesEle, k, maior ) ;
}
}
}
Explicação do código acima:
- Primeiro, a lista “ TESTE ” é inicializado com elementos de dados fictícios no “ principal() ” e impresso no console.
- Em seguida, a lista “testEle” é passada para a função “maxHeapify()” e, em seguida, a List retornada é exibida no console.
- Então o ' maxHeapify() ” é inicializado e o tamanho da lista fornecida é recuperado utilizando o método “ tamanho() ” método.
- Em seguida, utilize o “ para ” para definir a estrutura do heap e calcular a posição de cada nó.
- Agora, use o “ heapify() ” e defina a posição para os nós “top”, “left” e “right” atribuindo valores às variáveis “greater”, “leftSide” e “rightSide”, respectivamente.
- Depois disso, utilize vários “ se ” declarações condicionais para verificar se o “ lado esquerdo ” nó é maior que o nó “ lado direito ” nó e vice-versa. No final, o maior valor é armazenado no “ maior ' nó.
- Finalmente, o novo “ maior ” valor do nó é verificado com o valor já armazenado no “ maior ” variável de nó. E a ' trocar() ” funciona de acordo para definir o maior valor no “ maior ' variável.
Após o final da fase de execução:
O instantâneo mostra que o heap máximo é gerado usando o “ maxHeapify() ” método em Java.
Método 2: Use o método “Collections.reverseOrder()”
O ' Coleções.reverseOrder() ” oferece um método simples e conciso para gerar um “ pilha máxima ” classificando a coleção na ordem inversa. Isso permite que o código seja reutilizado e evita a necessidade de implementar o personalizado “ amontoar ” lógica, conforme mostrado no trecho de código abaixo:
importar java.util.ArrayList;importar java.util.Collections;
importar java.util.List;
classe pública ReverseOrderExample {
public static void main ( Corda [ ] argumentos ) // criação de principal ( ) método
{
Lista < inteiro > testesEle = new ArrayList <> ( ) ;
testEle.add ( 5 ) ;
testEle.add ( 38 ) ;
testEle.add ( 98 ) ;
testEle.add ( 26 ) ;
testEle.add ( 1 ) ;
testEle.add ( 73 ) ;
System.out.println ( 'Lista original: ' + testes ) ;
Coleções.sort ( testesEle, Collections.reverseOrder ( ) ) ;
System.out.println ( 'A pilha máxima gerada: ' + testes ) ;
}
}
Explicação do código acima:
- Primeiro, importe o “ ArrayList ”, “ Coleções ' e ' Lista ” utilitários no arquivo Java.
- Em seguida, crie um “ Lista 'chamado' TESTE ” e insira elementos fictícios na lista.
- A seguir, o “ organizar() ” é utilizado para classificar os elementos de dados em ordem crescente e passar a lista como um parâmetro ao longo do “ Coleções.reverseOrder() ” método. Isso faz com que a classificação do “ TESTE ” na ordem inversa.
Após o término da fase de execução:
O instantâneo mostra que “Max Heap” é gerado e classificado usando o método “Collections.reverseOrder()”.
Conclusão
Ao criar um “ pilha máxima ”, os usuários podem utilizar os métodos “maxHeapify()” e “Collections.reverseOrder()”. Eles gerenciam uma coleção de elementos de forma a permitir acesso rápido ao máximo de elementos e manutenção eficiente de uma ordem classificada. Depende apenas dos requisitos específicos e do nível de controle necessário sobre o processo de criação do heap.