20162328蔡文琛 week09 大二

20162328蔡文琛 大二week09

教材学习内容总结

堆是一棵完全二叉树,其中每个元素大于等于其所有子节点的值。
向堆中添加一个元素的方法是,首先将这个元素添加为叶节点然后将其向上移动到合适的位置。
从堆中删除最大元素的方法是,利用最后的叶节点来取代根,然后将其向下移动到合适的位置。
堆是一棵完全二叉树,其中每个元素大于等于其所有子节点的值。 向堆中添加一个元素的方法是,首先将这个元素添加为叶节点然后将其向上移动到合适的位置。 从堆中删除最大元素的方法是,利用最后的叶节点来取代根,然后将其向下移动到合适的位置。 堆排序利用堆的基本特性对异族元素进行排序。 优先队列不是FIFO队列。它根据优先级排列元素,而不是根据它们进入队列的次序来排列 二叉查找树和堆都是越输了元素之间关系的二叉树。二叉查找树中的结点大于他的左节点,并小于等于它的右子节点,而(最大)堆中的节点大于等于他的两个子节点。
最小堆中数的最小值在树的根,而最大堆中最大值在根。所以,他们的策略和实现机制都是类似的。
将元素作为新的叶节点添加到堆中,然后让它在树中向上移动到与其他元素的大小先对合适的位置。
在(最大)堆中,用树的最后叶节点体换根,然后将该元素向下移动到与其他元素大小合适的位置,从而删除最大元素。
堆排序是一种排序算法,他先将数据添加到堆中,然后按排序的次序删除他们。
优先队列是一个队列,其元素按指定的优先级来排序,优先级相同时,按出现的先后次序排序。

教材学习中的问题和解决过程

问题:还是不太理解优先队列的概念。
解决:
优先队列是一种用来维护由一组元素构成的集合S的数据结构,其中的每一个元素都有一个相关的值,称为关键字。优先队列也分为两种:最大优先队列和最小优先队列。
     一个最大优先队列支持以下操作:
•INSERT(S,x):把元素x插入集合S中;
•MAXIMUM(S):返回S中具有最大关键字的元素;
•EXTRACT_MAX(S):去掉并且返回S中的具有最大关键字的元素;
•INCREASE_KEY(S,x,k):将元素x的关键字值增加到k。
相应地,最小优先队列支持的操作包括INSERT、MINIMUM、EXTRAT_MIN和DECRESE_KEY。

[代码托管] (https://gitee.com/pdds2017/cwc20162328_JavaFoundations2nd/tree/master/src/FourArithmeticOperations)

posted @ 2017-11-05 19:12  Cai7  阅读(185)  评论(0编辑  收藏  举报