堆排序PYTHON实现

来源:互联网 发布:网络运维管理方案 编辑:程序博客网 时间:2024/05/24 05:43
class arr(list):    passa=arr([3,5,1,2,9,3,0,7,5,6,3,2])def left(i):return ((i+1)<<1)-1def right(i):return (i+1)<<1def p(i):return (i-1)>>1def 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)

0 0
原创粉丝点击