《算法设计与分析》课件 第1章 数据结构.pptx

《算法设计与分析》课件 第1章 数据结构.pptx

算法设计与分析堆和不相交集

数据结构算法的实现离不开数据结构。选择一个合适的数据结构对设计一个有效的算法有十分重要的影响。结构化程序设计创始人NiklausWirth(瑞士苏黎士高工)提出一个著名的论断:“程序=算法+数据结构”。1984年,Wirth因开发了Euler、Pascal等一系列崭新的计算语言而荣获图灵奖,有“结构化程序设计之父”之美誉我们已经学过数组、队列、栈、二叉树等数据结构,这里学习堆和不相交集

堆(Heap)在许多算法中,需要大量用到如下两种操作:插入元素和寻找最大(小)值元素。为了提高这两种运算的效率,必须使用恰当的数据结构。普通队列:易插入元素,但求最大(小)值元素需要搜索整个队列。排序数组:易找到最大(小)值,但插入元素需要移动大量元素。堆则是一种有效实现上述两种运算的简单数据结构。

堆(Heap)

堆(Heap):特征堆是一棵完全二叉树,堆所对应树的节点的排列必须是从上到下,从左到右的依次排列,否则将不构成堆在最大堆中,根节点值最大,叶子节点值较小,从根到叶子的一条路径上,节点值以非升序排列任何一个父节点的值都大于等于其子节点的值,但节点的左右子节点值并无顺序要求,且上层节点的值不一定大于下层节点的值堆中每个结点的子树都是堆

堆(Heap)有n个节点的堆T,可以用一个数组a[1…n]来存储,按照节点从上到下,从左到右的顺序依次存储用下

文档评论(0)

1亿VIP精品文档

相关文档