加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python实现的堆排序算法代码

发布时间:2020-12-17 17:16:34 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 def heapSort(a): def sift(start,count): root = start while root * 2 + 1 count: child = root * 2 + 1 if child count - 1 and a[child] a[child

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

def heapSort(a): 
    def sift(start,count): 
        root = start 
   
        while root * 2 + 1 < count: 
            child = root * 2 + 1 
            if child < count - 1 and a[child] < a[child + 1]: 
                child += 1 
            if a[root] < a[child]: 
                a[root],a[child] = a[child],a[root] 
                root = child 
            else: 
                return 
   
    count = len(a) 
    start = count / 2 - 1 
    end = count - 1 
   
    while start >= 0: 
        sift(start,count) 
        start -= 1 
   
    while end > 0: 
        a[end],a[0] = a[0],a[end] 
        sift(0,end) 
        end -= 1 
   
a = [-8,1,3,11,35,68] 
heapSort(a) 
print a # [-8,68]
 

Recursive?sift(and?more?readable?IMHO)?Version:
def heapsort(a): 
   
    def swap(a,i,j): 
        tmp = a[i] 
        a[i] = a[j] 
        a[j] = tmp   
           
    def siftdown(a,size): 
        l = 2*i+1 
        r = 2*i+2 
        largest = i 
        if l <= size-1 and a[l] > a[i]: 
            largest = l 
        if r <= size-1 and a[r] > a[largest]: 
            largest = r 
        if largest != i: 
            swap(a,largest) 
            siftdown(a,largest,size) 
               
    def heapify(a,size): 
        p = (size/2)-1 
        while p>=0: 
            siftdown(a,p,size) 
            p -= 1 
               
    size = len(a)         
    heapify(a,size) 
    end = size-1 
    while(end > 0): 
        swap(a,end) 
        siftdown(a,end) 
        end -= 1 

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读