-
Notifications
You must be signed in to change notification settings - Fork 0
/
do_binheap.py
executable file
·91 lines (74 loc) · 2.37 KB
/
do_binheap.py
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/python
import random
from BinHeap import BinHeap
left = BinHeap()
right = BinHeap()
numbers = []
median = 0
incoming = [1,9,1,2,5,10,1]
def mean2(a,b):
return (a.returnMax() + b.returnMin())/2.0
for n in incoming:
# i = random.randint(0,10)
i = n
numbers.append(i)
print "I: ", i
print "L size: ", left.currentSize
print "R size: ", right.currentSize
print "L max: ", left.returnMax()
print "R min: ", right.returnMin()
if len(numbers) == 1:
median = i
left.insert(i)
elif len(numbers) == 2:
if i > left.returnMax():
right.insert(i)
else:
right.insert(left.returnMax())
left.delMax()
left.insert(i)
median = mean2(left,right)
else:
if left.currentSize < right.currentSize:
if i <= left.returnMax():
left.insert(i)
else: # i > left.returnMax():
right.insert(i)
rightMin = right.returnMin()
right.delMin()
left.insert(rightMin)
median = mean2(left,right)
elif left.currentSize > right.currentSize:
if i >= right.returnMin():
right.insert(i)
else: # i < right.returnMin()
left.insert(i)
leftMax = left.returnMax()
left.delMax()
right.insert(leftMax)
median = mean2(left,right)
else: # left and right have same size
if i > left.returnMax() and i < right.returnMin():
left.insert(i)
median = i
elif i <= left.returnMax():
print "YOO"
print "LMAX-: ", left.returnMax()
print "I: ", i
print "SIZE- ", left.currentSize
left.insert(i)
print "SIZE ", left.currentSize
print "LMAX: ", left.returnMax()
median = left.returnMax()
else: # i >= right.returnMin():
right.insert(i)
median = right.returnMin()
print "M: %.1f" % median
print "L+ size: ", left.currentSize
print "R+ size: ", right.currentSize
print "L+ max: ", left.returnMax()
print "R+ min: ", right.returnMin()
print numbers
numbers.sort()
print numbers
print