class arr(list):
pass
a=arr([3,5,1,2,9,3,0,7,5,6,3,2])
def left(i):return ((i+1)<<1)-1
def right(i):return (i+1)<<1
def p(i):return (i-1)>>1
def heapfy(r,i):
t=left(i)
s=right(i)
if t<r.hs and r[i]<r[t]:
large=t
else:
large=i
if s<r.hs and r[large]<r[s]:
large=s
if large!=i:
r[large],r[i]=r[i],r[large]
heapfy(r,large)
def build(r):
r.hs=len(r)
for i in range(len(r)>>1,-1,-1):
heapfy(r,i)
def heapsort(r):
build(r)
while r.hs>0:
r[0],r[r.hs-1]=r[r.hs-1],r[0]
r.hs-=1
heapfy(r,0)
heapsort(a)
print(a)
堆排序PYTHON实现
最新推荐文章于 2021-05-26 17:35:38 发布