Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Daniel Bedialauneta
- #Ejercicio 2
- def del_maxheap(h):
- maxheap=h[1] #Guardo el primer elemento para luego retornarlo
- x=h.pop() #Elimino el último elemento y lo guardo en x
- h[0]-=1 #Disminuyo en 1 el tamaño del heap
- i=1
- while 2*i<=h[0]: #Mientras el hijo de i esté en una posición menor o igual que el tamaño del heap
- if x>=h[2*i] and x>=h[2*i+1]: #Si x ya es mayor o igual que su hijos, salgo del ciclo
- break
- if 2*i+1>h[0]: #Para el caso en el que solo tenga un hijo al final
- h[i]=h[2*i]
- i=2*i
- break #En realidad, este break no es necesario, ya que a este if solo entra en el último caso, pero bueno
- elif h[2*i]>h[2*i+1]:
- h[i]=h[2*i]
- i=2*i
- else:
- h[i]=h[2*i+1]
- i=2*i+1
- h[i]=x
- """
- Al igual que flotar, del_maxheap también tiene un coste log2(n)
- """
Add Comment
Please, Sign In to add comment