您的位置:首页 > 编程语言 > Python开发

堆排序PYTHON实现

2014-06-03 15:54 302 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: