队列的特点是先进先出。通常都把队列比喻成排队买东西,大家都很守秩序,先排队的人就先买东西。但是优先队列有所不同,它不遵循先进先出的规则,而是根据队列中元素的优先权,优先权最大的先被取出。这就很像堆的特征:总是移除优先级最高的根节点。
重点:优先级队列,是要看优先级的,谁的优先级更高,谁就先得到权限。不分排队的顺序!
上篇文章解释了堆的概念实现,现在用堆实现优先队列:
//最大...
分类:
编程语言 时间:
2015-12-19 16:38:10
阅读次数:
238
堆本质是一棵二叉树,其中所有的元素都可以按全序语义进行比较。用 堆来进行存储需要符合以下规则:
1.元素可比较性:数据集中的元素可以进行比较,就是要实现Comparable接口;。
2.节点最大/最小性:每个节点的元素必须大于或小于该节点的孩子节点的元素;
3.堆是一棵完全二叉树。
堆有两种:最大堆和最小堆。
最小堆中每个节点的优先级小于或者等于它的子节点;最大堆则相反,每个节点...
分类:
其他好文 时间:
2015-12-19 15:09:21
阅读次数:
327
STL入门与简介
#include
#include //容器
#include//数组
#include //算法
using namespace std;
//实现一个类模板,专门实现打印的功能
template //类模板实现了方法
class myvectorprint
{
public:
void operator ()(const T &t)//重载,使用(),打印
{...
分类:
编程语言 时间:
2015-12-02 12:38:26
阅读次数:
301
实现栈或是队列与实现优先队列的最大不同在于对性能的要求。对于栈和队列,我们的实现能够在常数时间内完成所有操作;而对于优先队列,插入元素和删除最大元素这两个操作之一在最坏情况下需要线性时间来完成。我们接下来要讨论的基于数据结构堆的实现能够保证这两种操作都能更快地执行。1.堆的定义数据结构二叉堆能够很好...
分类:
编程语言 时间:
2015-11-22 21:57:02
阅读次数:
324
1.在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出(FIFO—first...
分类:
其他好文 时间:
2015-11-15 23:19:32
阅读次数:
151
堆
这种数据结构。一般堆用来实现优先级队列。优先级队列:和通常的栈和队列一样,只不过里面的每个元素都有一个“优先级”,在处理的时候,首先处理优先级最高的。通常包含三个操作getMax/delMax/insert
栈和队列算是优先级队列的特例。
使用其他数据结构均不能同时在O(lgn)的复杂度下完成。至少有一种操作要耗时O(nlgn).比如链表的插入操作O(1),但是获取最大值必须遍历链表。...
分类:
其他好文 时间:
2015-11-12 13:44:54
阅读次数:
270
笔者作为一个小白,对于堆和栈的概念,总是感觉很朦胧,他们认识我,而我只是偶尔见过,并没有深交 然而在计算机领域,堆栈是一个不容忽视的概念,堆栈是 两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储 区,主要....
分类:
其他好文 时间:
2015-10-29 21:48:10
阅读次数:
306
堆排序:时间复杂度:O(nlogN)数据结构:堆,可以认为是一个完全二叉树特点:序号为i节点的父节点序号是i/2;左孩子节点序号是2*i;右孩子节点序号为2*i+1;使用对排序的步骤:1.构造堆(全部排序)2.构造固定大小的堆,然后依次处理剩余元素(TopN)
分类:
编程语言 时间:
2015-10-12 19:23:04
阅读次数:
128
堆栈概述??在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,后进先出(例如:乘车排队,先来的排在前面先上车,后来的就要排的后面后上车)。栈,先进后出(First-In/Last-Out...
分类:
其他好文 时间:
2015-10-01 10:23:51
阅读次数:
295