opérations des file de priorités en python
class heap:
def __init__(self):
self.t=[]
def push(self, x):
t=self.t
t.append(x)
k=len(t)-1
while k:
m=(k-1)//2
if t[k]<t[m]:
t[k], t[m]=t[m], t[k]
k=m
else:
break
def pop(self):
t=self.t
if not t:
raise IndexError("pop from empty heap")
if len(t)==1:
return t.pop()
root=t[0]
t[0]=t.pop()
k=0
while True:
L=[i for i in [2*k+1, 2*k+2] if i<len(t)]
if not L:
break
mini=min(t[i] for i in L)
if t[k]<mini:
break
for i in L:
if t[i]==mini:
t[i],t[k]=t[k], t[i]
k=i
break
return root
from random import randrange
n=6
h=heap()
for _ in range(n):
x=randrange(10,100)
h.push(x)
print(x, h.t)
print()
for _ in range(n):
print(h.pop())
Are there any code examples left?
New code examples in category Python
-
Python 2023-04-11 03:04:20
-
Python 2022-03-27 22:40:04 pycharm no module named
-
Python 2022-03-27 22:25:05 assign multiple variablesin one line
-
Python 2022-03-27 22:20:02 levenshtein distance
-
Python 2022-03-27 21:35:09 get text from url python last slash
-
Python 2022-03-27 21:30:30 df concatenate df
-
Python 2022-03-27 21:25:09 python odd or even
-
Python 2022-03-27 21:15:32 python include function from another file
-
Python 2022-03-27 21:10:01 color module python
-
Python 2022-03-27 21:00:27 python tkinter cursor types