优先级队列是一种用来维护一组元素构成的集合S的数据结构,这一组元素中的每一个都有

一个关键字key。一个最大优先级队列支持以下操作:

INSERT(S, x): 把元素x插入集合S

MAXIMUM(S): 返回S中具有最大关键字的元素

EXTRACT-MAX(S): 去掉并返回S中得具有最大关键字的元素

INCREASE-KEY(S, x, k): 将元素x的关键字的值增加到k,这里k值不能小于x的原关键字的值

HEAP-MAXIMUM(A)return A[1]

HEAP-EXTRACT-MAX(A)if heap-size[A] < 1then error "heap underflow"max ← A[1]A[1] ← A[heap-size[A]]heap-size[A] ←heap-size[A] - 1MAX-HEAPIFY(A, 1)return max

HEAP-INCREASE-KEY(A, i, key)if key < A[i]then error "new key is smaller than current key"A[i] ← keywhile i > 1 and A[PARENT(i)] < A[i]do exchange A[i] ↔ A[PARENT(i)]i ← PARENT(i)

MAX-HEAP-INSERT(A, key)heap-size[A] ← heap-size[A] + 1A[heap-size[A]] ← -∞HEAP-INCREASE-KEY(A, heap-size[A], key)

转载于:https://www.cnblogs.com/zhuqiang/archive/2012/05/06/2485981.html

堆排序的应用-优先级队列相关推荐

  1. 浅谈算法和数据结构: 五 优先级队列与堆排序

    原文:浅谈算法和数据结构: 五 优先级队列与堆排序 在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象.最简单的一个例子就是,在手机上玩游戏 ...

  2. 优先级队列(头条面试题)

    来源:算法面试题 优先级队列,不同于先进先出队列,其对每一个元素指定了优先级,一般情况下,出队时,优先级越高的元素越先出队.在面试过程中,优先级队列是面试官喜欢问的一个考点. 问题 (头条一面面试题) ...

  3. python优先级排序_Python实现优先级队列结构的方法详解

    最简单的实现一个队列至少满足2个方法,put和get. 借助最小堆来实现. 这里按"值越大优先级越高"的顺序. #coding=utf-8 from heapq import he ...

  4. 二叉堆详解实现优先级队列

    二叉堆详解实现优先级队列 文章目录 二叉堆详解实现优先级队列 一.二叉堆概览 二.优先级队列概览 三.实现 swim 和 sink 四.实现 delMax 和 insert 五.最后总结 二叉堆(Bi ...

  5. python优先级排序_Python实现一个优先级队列的方法

    问题 怎样实现一个按优先级排序的队列? 并且在这个队列上面每次 pop 操作总是返回优先级最高的那个元素 解决方案 下面的类利用 heapq 模块实现了一个简单的优先级队列: import heapq ...

  6. 算法与数据结构基础 - 堆(Heap)和优先级队列(Priority Queue)

    堆基础 堆(Heap)是具有这样性质的数据结构:1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值: 图片来源:这里 堆可以用数组存储,插入.删除会触发节点shift_down.shif ...

  7. 《Python Cookbook 3rd》笔记(1.5):实现一个优先级队列

    实现一个优先级队列 问题 怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素. 解法 下面的类利用 heapq 模块实现了一个简单的优先级队列: import ...

  8. 【STL学习】优先级队列Priority Queue详解与C++编程实现

    优先级队列Priority Queue介绍 优先级队列是一个拥有权值观念的queue.它允许在底端添加元素.在顶端去除元素.删除元素. 优先级队列内部的元素并不是按照添加的顺序排列,而是自动依照元素的 ...

  9. C++数据结构与算法(九) 树,优先级队列,最大堆的实现

    树: 用来表示具有结构层次的数据,应用: 软件工程技术:模块化技术 根: 子树: 在树中,每个元素都代表一个节点. 树的级: 根是一级,根的孩子是二级,一次往下,有三级,四级... 树的高度(深度): ...

最新文章

  1. weblogic服务器部署的程序,如何直接通过IP访问(即URL中去掉工程名)
  2. 做过十几年程序员,作为当今全世界顶级产品经理,出版第二部重磅作品《启示录2》...
  3. c++ time函数_Python22个构造函数法助力数据挖掘与分析
  4. eclipse创建python项目提示Project interpreter not specified
  5. 树莓派ssh连接问题
  6. poj3164(最小树形图朱刘算法模板)
  7. Linux添加用户(user)到用户组(group)
  8. Bluetooth handsfree 和 headset 区别
  9. 苹果:今年没有5G iPhone 那就先来个5G版MacBook吧?
  10. 多媒体播放(windows音乐播放)
  11. Android用户界面开发:控件集合
  12. E - Alignment
  13. java检测敏感词,Java实现敏感词检测的代码
  14. 《稻盛和夫经营学》读后感心得体会3180字范文
  15. ajax对象的值,简单谈谈AJAX核心对象
  16. mysql报1205错误
  17. [音乐天堂]Eventide
  18. 我的app JustDoIt 番茄时钟
  19. 【SSH】--鸿雁传书,信件发送
  20. 如何生成二维码?生成二维码其实很简单

热门文章

  1. 2020年对我影响最深的观点是下面3个,你呢?
  2. 一个人成就的高低,努力程度只是标配
  3. 如何在今日头条上持续生产优质内容
  4. linux sd卡 分区变大,Linux 动态调整分区大小
  5. ssis面试题_SSIS面试问题
  6. git bitbucket_如何在Bitbucket上创建新的Git存储库并查看提交的对象
  7. alwayson高可用组_AlwaysOn可用性组–如何在集群实例和独立实例之间设置AG(第3部分)
  8. CnCiswumWN
  9. docker for windows无法共享硬盘
  10. PHP全栈学习笔记3