八十三、经典排序算法之堆排序
        【摘要】     @Author:Runsen 
 
 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。 ---- Runsen 
 
堆通常是一个可以被看做一棵树(完全)的数组对象。且总是满足以下规则: 
 堆是一棵完全二叉树
 节点总是大于(或小于)它的孩子节点。
 
因此,根据第二个特性,就把二叉堆分为大顶堆(或叫最大堆),和小顶堆(或叫最小堆)。 
...
    
    
    
    @Author:Runsen
编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化。 ---- Runsen
堆通常是一个可以被看做一棵树(完全)的数组对象。且总是满足以下规则:
- 堆是一棵完全二叉树
 - 节点总是大于(或小于)它的孩子节点。
 
因此,根据第二个特性,就把二叉堆分为大顶堆(或叫最大堆),和小顶堆(或叫最小堆)。

在上图中,1 2 是大顶堆 ,3 4 是小顶堆。判断是不是堆的条件:从根结点到任意结点路径上结点序列的有序性!大顶堆和小顶堆判断序列是顺序还是逆序!
Python并没有提供“堆”这种数据类型,它是直接把列表当成堆处理的。Python提供的heapq包中有一些函数,提供执行堆操作的工具函数
>>> import heapq
>>> heapq.__all__
  
 - 1
 - 2
 
文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。
原文链接:maoli.blog.csdn.net/article/details/111746749
        【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
            cloudbbs@huaweicloud.com
        
        
        
        
        
        
        - 点赞
 - 收藏
 - 关注作者
 
            
           
评论(0)