-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathHeap.java
More file actions
55 lines (41 loc) · 903 Bytes
/
Heap.java
File metadata and controls
55 lines (41 loc) · 903 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Heap
{
Integer size=0;
Integer buffer=0;
Object[] A;
Heap(Integer k)
{
buffer=k;
A=new Object[buffer];
}
void BuildMaxHeap(Object[] A,Integer size)
{
for(Integer i=size/2;i>0;i--)
{
Heapify(A,i,size);
}
}
void Heapify(Object[] A,Integer n,Integer size)
{
Integer max=n;
if( (2*n) <=size && (Integer)A[2*n] > (Integer)A[max] )
{
max=2*n;
}
if( ((2*n)+1) <=size && (Integer)A[(2*n)+1] > (Integer)A[max] )
{
max=(2*n)+1;
}
if(max!=n)
{
exchange(A,max,n);
Heapify(A,max,size);
}
}
void exchange(Object[] A,Integer x,Integer y)
{
Object temp=A[x];
A[x]=A[y];
A[y]=temp;
}
}