Advertisement
Guest User

Untitled

a guest
Apr 20th, 2018
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. class PQ(object):
  2.  
  3. def __init__(self):
  4. self.d = {}
  5. self.N = 0
  6.  
  7. def insert(self, v):
  8. self.N += 1
  9. self.d[self.N] = v
  10. self.swim(self.N)
  11.  
  12. def size(self):
  13. return self.N
  14.  
  15. def is_empty(self):
  16. return self.size() == 0
  17.  
  18.  
  19. def getMax(self):
  20. return self.d[1]
  21.  
  22.  
  23. def delMax(self):
  24. v = self.d[1]
  25. self.exch(1, self.N)
  26. del(self.d[self.N])
  27. self.N -= 1
  28. self.sink(1)
  29. return v
  30.  
  31. def exch(self, i, j):
  32. self.d[i], self.d[j] = self.d[j], self.d[i]
  33.  
  34. def swim(self, k):
  35. while k > 1 and self.d[k//2] < self.d[k]:
  36. self.exch(k, k//2)
  37. k = k//2
  38.  
  39. def sink(self, k):
  40. while (2*k <= self.N):
  41. j = 2*k
  42. j = self.bigger(j, j+1)
  43. if self.d[k] >= self.d[j]:
  44. break
  45. self.exch(k, j)
  46. k = j
  47.  
  48. def bigger(self, i, j):
  49. try:
  50. return max([i, j], key=self.d.__getitem__)
  51. except KeyError:
  52. return i
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement