elcocodrilotito

Heaps 2

May 26th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.91 KB | None | 0 0
  1. #Daniel Bedialauneta
  2. #Ejercicio 2
  3. def del_maxheap(h):
  4.     maxheap=h[1] #Guardo el primer elemento para luego retornarlo
  5.     x=h.pop() #Elimino el último elemento y lo guardo en x
  6.     h[0]-=1 #Disminuyo en 1 el tamaño del heap
  7.     i=1
  8.     while 2*i<=h[0]: #Mientras el hijo de i esté en una posición menor o igual que el tamaño del heap
  9.         if x>=h[2*i] and x>=h[2*i+1]: #Si x ya es mayor o igual que su hijos, salgo del ciclo
  10.             break
  11.         if 2*i+1>h[0]: #Para el caso en el que solo tenga un hijo al final
  12.             h[i]=h[2*i]
  13.             i=2*i
  14.             break  #En realidad, este break no es necesario, ya que a este if solo entra en el último caso, pero bueno
  15.         elif h[2*i]>h[2*i+1]:
  16.             h[i]=h[2*i]
  17.             i=2*i
  18.         else:
  19.             h[i]=h[2*i+1]
  20.             i=2*i+1
  21.     h[i]=x
  22.  
  23. """
  24. Al igual que flotar, del_maxheap también tiene un coste log2(n)
  25. """
Add Comment
Please, Sign In to add comment