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
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
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

Heap Máximo

  • 1.
    C:UserselainDocumentsNetBeansProjectsHeapMaximosrcHeapMaximoHeapMaximo.java 1 package HeapMaximo; 2 3import 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(" Elementoinserido 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 staticvoid 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