seo网站推广方式,灯饰外贸网站,容易导致网站作弊的几个嫌疑,北京网站建设资讯普通的队列是一种先进先出的数据结构#xff0c;元素在队列尾追加#xff0c;而从队列头删除#xff0c;在某些情况下#xff0c;我们可能需要找出队列中的最大值或者最小值。 例如使用一个队列保存计算机的任务#xff0c;一般情况下计算机的任务都是有优先级的#xff…普通的队列是一种先进先出的数据结构元素在队列尾追加而从队列头删除在某些情况下我们可能需要找出队列中的最大值或者最小值。 例如使用一个队列保存计算机的任务一般情况下计算机的任务都是有优先级的我们需要在最小计算机的任务中找出优先级最高的任务先执行执行完毕后就需要吧这个任务从队列中删除。 普通的队列要完成这样的姑娘需要每次便利队列中的所有元素比较并找出最大值效率不是很高这个时候我们就需要用一种特殊的队列来完成这种需求优先队列。
优先队列按照作用可分为两类 最大优先队列可以获取并删除队列中最大的值 最小优先队列可以获取并删除队列中最小的值
优先队列是通常是靠堆实现的。
一.最大优先队列
我们之前学习过堆而堆这种结构是可以方便的删除最大的值所以我们可以基于堆区实现最大优先队列。
二.最小优先队列
最小优先队列实现起来也比较简单我们同样也可以基于堆来完成最小优先队列。 我们前面学习堆的时候堆中存放数据元素的数组要满足如下特性1.最大的元素放在数组的索引1处。 2.每个结点的数据总是大于等于它的两个子结点的数据。
其实我们之前实现的队可以把它叫做最大堆我们可以用相反的思想实现最小堆让对重存放数组元素的数组满足如下特性1.最小的元素放在数组的索引1处。 2.每个结点的数据总是小于等于它的两个子结点的数据。
这样我们就能很快的访问到堆中最小的数据。