堆 本科精品课件.pptx

例5-12:堆排序(优先队列)堆排序是一种树型选择排序在排序过程中,将R[0]~R[n-1]看成是完全二叉树顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择关键字最小记录1排序算法思想

1、根据初始输入,形成初始堆。2、通过一系列的对象交换和重新调整进行排序。堆排序分为两个步骤:2排序算法思想

堆的定义n个关键字序列K1,k2,...,Kn称为堆,当且仅当该序列满足特性:从堆的定义可以看出,堆实质上是满足如下性质的二叉树:树中任一非叶子结点的关键字均小于或等于它的孩子结点的关键字。3排序算法思想

101556253070101556253070小根堆示例4排序算法思想

705630251510705630251510大根堆示例5排序算法思想

堆排序的第一个工作是建堆,即把整个记录数组R[1]~R[n]调整为一个堆。显然,只有一个结点的树是堆,而在完全二叉树中,所有序号i=的结点都是叶子,因此以这些结点为根的子树都已是堆。这样,我们只需依次将序号为n/2,n/2-1,...,1的结点作为根的子树都调整为堆即可。我们以大根堆为例进行说明6排序算法思想

若已知结点R[i]的左右子树已是堆,如何将以R[i]为根的完全二叉树也调整为堆?解决这一问题可采用“筛选法”基本思想是:因为R[i]

文档评论(0)

1亿VIP精品文档

相关文档