13
13
public class MedianOfStream {
14
14
15
15
public static int getMedianOfStream (int med , int elem , MaxHeap maxHeap , MinHeap minHeap ) {
16
+
16
17
switch (compare (maxHeap .getSize (), minHeap .getSize ())) {
17
18
case 0 :
18
19
if (elem < med ) {
@@ -30,7 +31,7 @@ public static int getMedianOfStream(int med, int elem, MaxHeap maxHeap, MinHeap
30
31
} else {
31
32
minHeap .insert (elem );
32
33
}
33
- med = (maxHeap .findMax () + minHeap .findMin ())/ 2 ;
34
+ med = (maxHeap .findMax () + minHeap .findMin ()) / 2 ;
34
35
break ;
35
36
case -1 :
36
37
if (elem < med ) {
@@ -39,16 +40,16 @@ public static int getMedianOfStream(int med, int elem, MaxHeap maxHeap, MinHeap
39
40
maxHeap .insert (minHeap .deleteMin ());
40
41
minHeap .insert (elem );
41
42
}
42
- med = (maxHeap .findMax () + minHeap .findMin ())/ 2 ;
43
+ med = (maxHeap .findMax () + minHeap .findMin ()) / 2 ;
43
44
break ;
44
45
}
45
46
return med ;
46
47
}
47
48
48
49
static void printMedianOfStream (int [] a ) {
49
50
int m = 0 ;
50
- MaxHeap maxHeap = new MaxHeap (128 );
51
- MinHeap minHeap = new MinHeap (128 );
51
+ MaxHeap maxHeap = new MaxHeap (12 );
52
+ MinHeap minHeap = new MinHeap (12 );
52
53
for (int i = 0 ; i < a .length ; i ++) {
53
54
m = getMedianOfStream (m , a [i ], maxHeap , minHeap );
54
55
}
@@ -135,8 +136,7 @@ public void insert(int x) {
135
136
* Function to find least element *
136
137
*/
137
138
public int findMin () {
138
- if (isEmpty ())
139
- throw new NoSuchElementException ("Underflow Exception" );
139
+ if (size == 0 ) return -1 ;
140
140
return heap [0 ];
141
141
}
142
142
@@ -236,7 +236,8 @@ public MaxHeap(int maxsize) {
236
236
}
237
237
238
238
public int findMax () {
239
- return heap [0 ];
239
+ if (size == 0 ) return -1 ;
240
+ return heap [FRONT ];
240
241
}
241
242
242
243
public int parent (int pos ) {
0 commit comments