Python 提供了关于堆的操作,下面先简单介绍有关堆的概念。假设有 n 个数据元素的序列 k0,k1,…,kn-1,当且仅当满足ki≤k2i+1 且 ki≤k2i+2(其中 i=0,2,...,(n-1)/2)时,可以将这组数据称为小顶堆(小根堆);或者满足 ki≥k2i+1 且 ki≥k2i+2(其中 i=0,2,...,(n-1)/2)时,可以将这组数据称为大顶堆(大根堆)。对于满足小顶堆的
 今天的文章来介绍Python当中一个蛮有用的库——heapq。heapq的全写是heap queue,是堆队列的意思。这里的堆和队列都是数据结构,在后序的文章当中我们会详细介绍,今天只介绍heapq的用法,如果不了解heap和queue原理的同学可以忽略,我们并不会深入太多,会在之后的文章里详细阐述。在介绍用法之前,我们需要先知道优先队列的定义。队列大家应该都不陌生,也是非常基础简单的
1、heapq介绍:1)堆是非线性的树形的数据结构,有两种堆,最大堆与最小堆。( heapq库中的堆默认是最小堆)最大堆,树种各个父节点的值总是大于或等于任何一个子节点的值。最小堆,树种各个父节点的值总是小于或等于任何一个子节点的值。2)堆是一个二叉树,其中最小堆每个父节点的值都小于或等于其所有子节点的值。整个最小堆的最小元素总是位于二叉树的根节点。3)堆是用数组实现的二叉树,所以它没有