30 lines
		
	
	
	
		
			707 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			707 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from math import floor
 | |
| 
 | |
| class Heap(object):
 | |
|     def __init__(self):
 | |
|         self.xs = [None]
 | |
|         self.i = 1
 | |
| 
 | |
|     def __repr__(self):
 | |
|         return "[{}]".format(", ".join(str(x) for x in self.xs[1:]))
 | |
| 
 | |
|     def insert(self, x):
 | |
|         if len(self.xs) == 1:
 | |
|             self.xs.append(x)
 | |
|             self.i += 1
 | |
|             return
 | |
|         self.xs.append(x)
 | |
|         i = self.i
 | |
|         while i != 1 and self.xs[floor(i / 2)] > self.xs[i]:
 | |
|             self.xs[floor(i / 2)], self.xs[i] = self.xs[i], self.xs[floor(i / 2)]
 | |
|             i = floor(i / 2)
 | |
|         self.i += 1
 | |
| 
 | |
|     def root(self):
 | |
|         return self.xs[1]
 | |
| 
 | |
| xs = Heap()
 | |
| print(xs)
 | |
| for x in [12, 15, 14, 21, 1, 10]:
 | |
|     xs.insert(x)
 | |
|     print(xs)
 |