目录

最大优先队列的实现

测试类及结果

最大优先队列的实现

package DataStructure.priority;
//最大优先队列
//用大顶堆去实现
public class MaxPriorityQueue<T extends Comparable<T>> {private T[] items;private int N;public MaxPriorityQueue(int capacity){this.items=(T[])new Comparable[capacity+1];this.N=0;}public int size(){return N;}public boolean isempty(){return N==0;}public boolean less(int i,int j){return items[i].compareTo(items[j])<0;}public void exch(int i,int j){T tmp=items[i];items[i]=items[j];items[j]=tmp;}public void insert(T t){items[++N]=t;swim(N);}public T delMax(){T max=items[1];exch(1,N);N--;sink(1);return max;}//上浮算法public void swim(int k){while(k>1){if(less(k/2,k)){//如果父节点小于k则交换exch(k/2,k);}k=k/2;}}//下沉算法public void sink(int k){while(2*k<=N){//有左子节点int max;if(2*k+1<=N){//有右子节点if(less(2*k,2*k+1)){max=2*k+1;}else{max=2*k;}}else{max=2*k;}if(!less(k,max)){break;}exch(k,max);k=max;}}
}

测试类及结果

用大顶堆实现最大优先队列相关推荐

  1. 用大顶堆取出一个数组中最小的k个数

    eg:从一亿个数中取出最小的k个数字 分析: 大顶堆满足,当前元素永远大于他的左右子树的值,非叶子节点的下标为n/2-1,左子树下标为i*2+1右子树下标为i*2+2 源码: import java. ...

  2. 大顶堆小顶堆优先队列

    特性和应用场景 大顶堆小顶堆,也叫优先队列,是一种基于数组+平衡二叉树的数据结构. 主要用于排序,增减操作的速度较快(O(logn)) 适合带有优先级的排序场景,比如处理订单的时候,VIP用户的优先级 ...

  3. NO29、最小的K个数(应该记住大顶堆和小顶堆的区别与联系,并不难)

    29.最小的K个数 应该记住大顶堆和小顶堆的区别与联系,并不难 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 示例1 输入 ...

  4. c语言标准模板小顶堆,堆排序(大顶堆、小顶堆)----C语言

    堆排序 之前的随笔写了栈(顺序栈.链式栈).队列(循环队列.链式队列).链表.二叉树,这次随笔来写堆 1.什么是堆? 堆是一种非线性结构,(本篇随笔主要分析堆的数组实现)可以把堆看作一个数组,也可以被 ...

  5. c语言大顶堆数组维护,图解大顶堆的构建、排序过程

    这两天在复习大顶堆和小顶堆,比起两年前的懵懵懂懂,这次理解起来就容易了一些.又翻看了一下自己之前的笔记数据结构与算法之PHP排序算法(堆排序),发现自己这次查阅资料,和之前的思路不太一样,遂写下这篇笔 ...

  6. 剑指Offer之寻找数据流中的中位数【包含大顶堆小顶堆解释】

    数据流中的中位数 题目描述 题解 最小堆和最大堆解释 参考链接 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶 ...

  7. 谈谈堆排序,大顶堆,小顶堆

    目录 1.前言 2.使用堆的原因 3.堆的特点 4.堆和普通树的区别 5.堆排序的过程 6.堆排序的代码实现 来源: jianshu.com/p/15a29c0ace73 1.前言 堆是一种非线性结构 ...

  8. 大顶堆,n个数中找最小的k个数

    package com.alo.offer;import java.util.Scanner;/*** n个数中找到最小的m个数 使用大顶堆* n个书中找到最大的m个数 使用小顶堆* @author ...

  9. 堆排序:大顶堆和小顶堆 + 前K个高频元素

    堆 一.堆排序 小顶堆 举个栗子 大顶堆 二.前K个高频元素 思路分析 三.构造器代码解析 一.堆排序 要了解大顶堆和小顶堆,我们先简单了解一下堆排序. 堆排序(Heapsort)是指利用堆这种数据结 ...

最新文章

  1. Ansible — 编程 — Variables
  2. 正则表达式快速入门(归纳版)
  3. 隐藏1:N关系和工具
  4. java安全编码指南之:线程安全规则
  5. oracle数据库用脚本运行SQL语句
  6. 模块 python_Python入门基础:模块基础
  7. SQL Server 索引结构及其使用(三)(转)
  8. js实现侧边栏信息展示效果
  9. messagebox弹窗_从案例入手学Python——检测文件生成并弹窗提醒
  10. 将为知笔记发布到博客园
  11. 人工智能算法:遗传算法
  12. 如何对接VOLVO EDI系统?
  13. 计算机二级正式样式在哪里,满分新建样式,修改样式要学会-计算机二级等考office的省时利器...
  14. 震惊:爱测未来技术嘉年华竟然这些免费送
  15. PCB布局和绘制的关键操作
  16. EnPass+WebDAV(一个跨平台密码管理解决方案)
  17. i5 13490f参数 怎么样 i5 13490f功耗 酷睿i513490f什么水平级别
  18. 元宵节一起来炸汤(chu)圆(fang)
  19. 2017达内前端开发工程师视频教程
  20. java研发网页数据采集

热门文章

  1. 代理详解 静态代理+JDK/CGLIB 动态代理实战
  2. 聊聊接口优化的几个方法
  3. iOS开发笔记--UIView中的坐标转换
  4. pythonmysql数据库系统实战_Python实战之MySQL数据库操作
  5. java动态代理_Java代理模式及动态代理详解
  6. latex 表格单元格上下左右居中_Excel文字对齐技巧:学会这6种方式,快速整理规范表格...
  7. java返回有什么用,java中的return this什么时候用,返回的是类里面的方法类型,还是实例类?上面的代码什么意思...
  8. android 高德地图纠偏,高德地图纠偏算法(android ,ios)
  9. python使用什么函数接收用户输入的数据_python 3.x:调用和执行函数的用户输入...
  10. 串口同步异步c语言程序,同步串口spi的c语言编程