MCPcopy Create free account
hub / github.com/Deepali-Srivastava/data-structures-and-algorithms-in-java / Demo1

Class Demo1

Tree/heap/Demo1.java:8–92  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6package heap;
7
8public class Demo1
9{
10 public static void buildHeap_TopDown(int[] a, int n)
11 {
12 for(int i=2; i<=n; i++)
13 restoreUp(i,a);
14 }
15
16 public static void buildHeap_BottomUp(int[] a, int n)
17 {
18 for(int i=n/2; i>=1; i--)
19 restoreDown(i,a,n);
20 }
21
22 private static void restoreUp(int i, int[] a)
23 {
24 int k=a[i];
25 int iparent=i/2;
26
27 while(a[iparent]<k) /* No sentinel : while(iparent>=1 && a[iparent]<k) */
28 {
29 a[i]=a[iparent];
30 i=iparent;
31 iparent=i/2;
32 }
33 a[i]=k;
34 }
35
36 private static void restoreDown(int i, int[] a, int n)
37 {
38 int k=a[i];
39 int lchild=2*i, rchild=lchild+1;
40
41 while(rchild<=n)
42 {
43 if( k>=a[lchild] && k>=a[rchild] )
44 {
45 a[i]=k;
46 return;
47 }
48 else if(a[lchild] > a[rchild])
49 {
50 a[i]=a[lchild];
51 i=lchild;
52 }
53 else
54 {
55 a[i]=a[rchild];
56 i=rchild;
57 }
58 lchild=2*i;
59 rchild=lchild+1;
60 }
61
62 /*If number of nodes is even*/
63 if(lchild==n && k<a[lchild])
64 {
65 a[i]=a[lchild];

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected