优先队列push pop操作

#include <stdio.h>//优先队列(大顶堆实现)
#define max 100                                //两种功能:1、插入一个数值
int heap[max];                                           //2、取出其中最大(小)值
int sz = 0;//堆中数值个数
void push(int x)
{int i = sz ++; //i表示x(最后一个)的编号 同时个数加一 while(i > 0){int p = (i-1)/2;if(heap[p] >= x) break;  //如果某个heap[i]的父节点比它大 就把x放到这里 heap[i] = heap[p];//否则 父节点下来 然后再将这个父节点(此时为x)当成下一个子节点,再往上找 i = p;}heap[i] = x;
}
void pop()
{int ret = heap[0]; //大顶堆的最大值int x = heap[--sz]; // 取最后一个元素,并且删除 (因为要保证是完全二叉树,所以取最后一个) int i = 0; //把x放到开头 while(i*2+1 < sz){int l = i*2 + 1; //左孩子 int r = i*2 + 2; //右孩子 if(r < sz && heap[l] < heap[r]) l = r; //两个孩子中较大的 设为l,heap[l] if(x > heap[l]) break; //如果x 比这两个孩子都大,因为下面已经保证是大顶堆了,所以x放到这 heap[i] = heap[l];//否则 较大的这个孩子节点提上去,将较大的孩子节点(此时为x)作为下一个节点,继续往下找 i = l;} heap[i] = x;
}

优先队列push pop操作相关推荐

  1. 每天一算法(二)实现栈的push pop 操作,并可以输出栈的最小值

    实现栈的push pop 操作,并可以输出栈的最小值 // SatckMin.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include ...

  2. python实现栈的操作_python简单实现队列和栈push、pop操作

    栈: # -*- coding: utf-8 -*- #定义序列 lst=[] def pop(): if(len(lst)==0): print"栈为空","无法出栈& ...

  3. JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作(《剑指offer》)

    最近在刷<剑指offer>里的编程题,但是网上关于<剑指offer>的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码 ...

  4. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. import java.util.Stack; public class Solution {      ...

  5. 算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...

    算法:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型.<剑指offer> 利用栈来进行操作,代码注释写的比较清楚:首先判断两个栈是否是空的:其次当栈二 ...

  6. js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

    js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip push()函数用于向当前数组的添加一个或多个元素,并返回新的数组长度.新的元素将会 ...

  7. 8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))

    push和pop是用来操作栈的2个指令. push寄存器:将一个寄存器中的数据入栈pop寄存器:出栈用一个寄存器接收数据 1.push pop 只对字操作(不允许字节进栈)操作数长度为32位时进出栈为 ...

  8. c语言isempty函数代码,使用C语言实现链栈以及initialize,push,pop,isEmpty,getlength,destory等操作...

    本文使用了链栈,相对于顺序栈,链栈具有通常情况下不会出现栈满的情况 链栈和链表很相似. 由于栈的先进后出特性,栈在很多地方都很适用,比如 括号匹配,算术表达式求职,路径判断(走迷宫游戏)高级点的有函数 ...

  9. 操作Perl数组: shift, unshift, push, pop

    转载自Perl Maven https://cn.perlmaven.com/manipulating-perl-arrays 操作Perl数组: shift, unshift, push, pop ...

  10. js push(),pop(),unshift(),shift()的用法小结

    js中push(),pop(),unshift(),shift()的用法小结 1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容 ...

最新文章

  1. JS根据两点的经纬度坐标得到驾车行驶距离
  2. 深度学习中 Embedding层两大作用的个人理解
  3. 欢迎大家加入我的圈子
  4. 算法---------数组-----------寻找峰值
  5. jenkins linux虚拟机,Linux系统中jenkins使用的简单介绍
  6. nginx html 替换,Nginx 服务内容替换功能(sub模块)
  7. [Qt教程] 第43篇 进阶(三)对象树与拥有权
  8. Titanic: Machine Learning from Disaster-kaggle入门赛-学习笔记
  9. ubtunu打开firefox_Linux Ubuntu 终端命令行打开firefox报错
  10. 七个顶级的心理寓言(转载)
  11. php设计模式 -- 迭代器模式
  12. 打开运行PS、AI等软件时卡在启动窗口的解决办
  13. 2021阿里巴巴实习生面试经验
  14. 账结法”、“表结法”两种财务会计处理方法
  15. java获取域名的mx记录,A记录、CNAME、MX记录、NS记录
  16. 对数据运营工作的思考及优化方向
  17. 【C++面试必备】一个专栏带你搞定剑指offer第二版
  18. Android让屏幕保持常亮,不熄屏的三种方法
  19. Flutter必备——Dart入门(下)
  20. 亚稳态原因以及跨时钟处理方法

热门文章

  1. 解决pgAdmin4启动失败方法(The pgAdmin 4 sever could not be contacted)
  2. 守望先锋战网服务器维护多长时间,守望先锋国服压力测试多长时间 压力测试删档吗等问题解答...
  3. javascript getDate()方法
  4. 《邪不压正》好不好看?大数据分析告诉你
  5. 魔兽世界3.35+mysql_新魔兽世界3.35兔子王版本商业 一键启动服务端
  6. meta http-equiv 属性 详解
  7. 高仿富途牛牛-组件化(六)-炒鸡牛逼的布局记忆功能(序列化和反序列化)
  8. BUUCTF:小易的U盘
  9. 开源 5k star 的定时任务管理系统,我爱了!
  10. 剑指Offer 46.把数字翻译成字符串(Python)