1. C:UserselainDocumentsNetBeansProjectsHeapMaximosrcHeapMaximoHeapMaximo.java
1 package HeapMaximo;
2
3 import java.util.Scanner;
4
5 public class HeapMaximo {
6
7 static int vetor[] = new int[11];
8
9 public static void main(String[] args) {
10 int op, i, tamanho=0, maiorPrioridade, indice, numero;
11 Scanner s = new Scanner(System.in);
12 do {
13 System.out.println(" | MENU | ");
14 System.out.println(" | 1. Inserir | ");
15 System.out.println(" | 2. Consultar o maior elemento | ");
16 System.out.println(" | 3. Remover o elemento da posição 1 | ");
17 System.out.println(" | 4. Listar todos os elementos da HEAP | ");
18 System.out.println(" | 5. Sair | ");
19 System.out.println("");
20 System.out.print("Digite a opção desejada: ");
21 op = s.nextInt();
22 System.out.println("");
23
24 switch (op) {
25 case 1:
26 System.out.println(" == INSERINDO NA HEAP == ");
27 //se o tamanho for MENOR que o tamanho do VETOR menos 1
28 if (tamanho < (vetor.length - 1)) {
29
30 tamanho++; //incrementa o tamanho
31
32 //solicita que o usuário digite um número para inserir na heap
33 System.out.print(" Digite um elemento: ");
34 numero = s.nextInt();
35
36 indice = tamanho; //o índice do vetor recebe o valor de tamanho
37
38 //enquanto o índice for MENOR que 1 E
39 //enquanto o índice do elemento PAI do vetor for menor
40 //que o número digitado
41 while ((indice > 1) && (vetor[Pai(indice)] < numero)) {
42 //a posicao atual recebe o valor da posicao pai
43 vetor[indice] = vetor[Pai(indice)];
44 //indice recebe o valor da posicao PAI
45 indice = Pai(indice);
46 }
47 vetor[indice] = numero; //a posicao INDICE do vetor recebe o número
HeapMaximo.java file:///C:/Users/elain/HeapMaximo.html
1 de 3 09/09/2016 18:32
2. 48 System.out.println(" Elemento inserido com sucesso! ");
49 System.out.println("");
50 } else {
51 System.out.println(" HEAP LOTADA! ");
52 System.out.println("");
53 }
54 break;
55 case 2:
56 if (tamanho == 0) {
57 System.out.println(" HEAP VAZIA! ");
58 } else{
59 System.out.println(" Elemento de maior prioridade: " + vetor[1]);
60 System.out.println("");
61 }
62 break;
63 case 3:
64 if (tamanho == 0) {
65 System.out.println(" HEAP VAZIA! ");
66 }else{
67 System.out.println(" == Remoção automática da primeira posição da HEAP == ");
68 maiorPrioridade = vetor[1];
69 vetor[1] = vetor[tamanho];
70 tamanho--;
71 heap(1, tamanho);
72 System.out.println(" O elemento removido foi: " + maiorPrioridade);
73 System.out.println("");
74 }
75 break;
76 case 4:
77 if (tamanho == 0) {
78 System.out.println(" HEAP VAZIA!!! ");
79 } else {
80 System.out.println(" == Imprimindo todos os elementos da HEAP == ");
81 for (i = 0; i < tamanho + 1; i++) {
82 System.out.println(" | Posicão: " + i + " | Elemento: " + vetor[i] + " | ");
83 }
84 System.out.println("");
85 }
86 break;
87 default:
88 System.out.println(" | OPÇÃO INVÁLIDA | ");
89 System.out.println("");
90 }
91 } while (op != 5);
92
93 }
94
95 public static int Pai(int x) {
96 return (x / 2);
97 }
HeapMaximo.java file:///C:/Users/elain/HeapMaximo.html
2 de 3 09/09/2016 18:32
3. 98
99 public static void heap(int i, int qtde) {
100 int maior, e, d, aux;
101 maior = i;
102 if ((2 * i + 1) <= qtde) {
103 e = (2 * i + 1);
104 d = 2 * i;
105 if ((vetor[e] >= vetor[d]) && (vetor[e] > vetor[i])) {
106 maior = 2 * i + 1;
107 } else if ((vetor[d] > vetor[e]) && (vetor[d] > vetor[i])) {
108 maior = 2 * i;
109 }
110 } else if ((2 * 1) <= 10) {
111 d = 2 * i;
112 if (vetor[d] > vetor[i]) {
113 maior = 2 * i;
114 }
115 }
116 if (maior != i) {
117 aux = vetor[i];
118 vetor[i] = vetor[maior];
119 vetor[maior] = aux;
120 heap(maior, qtde);
121 }
122 }
123
124
125 }
126
HeapMaximo.java file:///C:/Users/elain/HeapMaximo.html
3 de 3 09/09/2016 18:32