当前位置: 首页 > wzjs >正文

桐庐做网站陕西网站建设网络公司

桐庐做网站,陕西网站建设网络公司,沈阳建设工程信息网招标显示待验证什么意思,web网站设计案例一、了解 priority_queue 用于实现优先队列(堆)。它基于 std::vector(默认使用vector) 或 std::deque 实现,默认情况下是一个最大堆(即队首元素是最大的元素)。 对于异常处理,空队…

一、了解

priority_queue 用于实现优先队列(堆)。它基于 std::vector(默认使用vector) 或 std::deque 实现默认情况下是一个最大堆(即队首元素是最大的元素)

  • 对于异常处理,空队列一般自定义,但是priority_queue 会使用std::out_of_range异常
  • 时间复杂度
    • 插入操作:O(log n)
    • 删除操作:O(log n)
    • 访问队首元素:O(1)

常见问题

  • 1、如何从给定的无序数组中找到第 K 大的元素?

    • 参考题目力扣215数组中的第k个最大元素
      在这里插入图片描述
  • 2、实现一个优先队列,并解释它的插入和删除操作的时间复杂度。

    • 优先队列是堆结构
    • 插入:把新元素放到最后,再与其他元素对比后上浮到合适位置。
    • 删除:删除的是堆顶。删除后,把最后的元素移到最上面,然后再下浮到合适位置。
    • 插入操作时间复杂度:O(log n)
    • 删除操作时间复杂度:O(log n)
  • 3、什么是堆排序?它的时间复杂度和空间复杂度是多少?

    • 堆排序:通过构建堆,将数组中的元素按升序或降序排列。
    • 时间复杂度:O(n log n) 空间复杂度:O(1)(就地排序)
  • 4、二叉堆和斐波那契堆有什么区别?它们的操作的时间复杂度有何不同?

    • 二叉堆和斐波那契堆主要区别在于他们的操作有不同时间复杂度。
    • 二叉堆:插入和删除的时间复杂度是O(log n)
    • 菲波那切堆:插入和减小都是O(1),删除最小元素是O(log n)但是均摊时间复杂度。
  • 5、如何在 O(n) 时间复杂度内构建一个堆?

    • 找到最后一个非叶子节点:最后一个非叶子节点的索引为 n/2 - 1(其中 n 是数组的长度)
    • 从后向前调整:从最后一个非叶子节点开始,向前遍历每个节点对每个节点执行“下沉”操作,确保以该节点为根的子树满足堆的性质。

//使用的头文件

#include<queue>

二、初始化

priority< typename> name;
priority<typename,sequence >name;

priority_queue<int>q1;//最大堆,堆顶是最大值
priority_queue<int,vector<int>>q2;//最小堆,堆顶是最小值

三、常用函数

1、总结

在这里插入图片描述

2、例子

首先是这里用到的头文件

#include< iostream>
#include< cstdio>
#include< queue>
using namespace std;

2.1、插入操作

  • q.push(value)
int main(){priority_queue<int>q1;//最大堆,堆顶是最大值q1.push(1);q1.push(4);q1.push(2);q1.push(3);while(q1.empty()==0){cout<<q1.top()<<" ";//4 3 2 1q1.pop();}
}
  • q.pop()
int main(){priority_queue<int>q1;//最大堆,堆顶是最大值q1.push(1);q1.push(4);q1.push(2);q1.push(3);q1.pop();while(q1.empty()==0){cout<<q1.top()<<" ";//3 2 1q1.pop();}
}

2.2、访问操作

  • q.top()
int main(){priority_queue<int>q1;//最大堆,堆顶是最大值q1.push(1);q1.push(4);q1.push(2);q1.push(3);printf("%d",q1.top());//4
}

2.3、容量操作

  • q.empty()

int main(){priority_queue<int>q1;//最大堆,堆顶是最大值q1.push(1);q1.push(4);q1.push(2);q1.push(3);if(q1.empty()==1){cout<<"q1是空的"<<endl;}else{cout<<"q1不是空的"<<endl;}
}
  • q.size()
priority_queue<int>q;
q.push(1);
int num =q.size();
cout<<num<<endl;//1
http://www.dtcms.com/wzjs/502574.html

相关文章:

  • 商务网站建设项目的技术可行性百度搜索广告价格
  • 有用建站宝盒做网站的吗seo整站优化服务
  • 阿里爸爸网站建设策划书百度官方网首页
  • wordpress怎么删除文章seo建设招商
  • 装修公司做网站推广能接到活吗郑州网络推广代理顾问
  • 商业网站开发教程百度霸屏全网推广
  • 购物网站建设市场调查论文打开网址资料网站
  • 湖北武汉网站制作企业微信会话内容存档
  • 南宁做网站 的推广赚佣金的平台
  • 网络平台管理制度和管理办法seo页面代码优化
  • 无锡集团网站建设平台做推广的技巧
  • 怎样免费给自己的公司做网站百度客服人工在线咨询电话
  • 已有网站可以做服务器吗沪深300指数是什么意思
  • 南昌网站建设公司渠道阿里指数在线查询
  • 日本专门做恋足的网站网络营销案例视频
  • 高新企业建设网站公司网站视频播放代码
  • 做的网站名深圳百度关键
  • php 快速网站开发营销型外贸网站建设
  • 网盘可以做网站空间吗唐山seo优化
  • 网站推广的10种方法做百度推广代运营有用吗
  • 陕西专业网站开发联系电话seo具体优化流程
  • 网站建设 ppt镇江网络
  • 沂水做网站济南seo关键词优化方案
  • py网站开发磁力神器
  • 岳阳网站建设哪家好培训体系
  • 弥勒市建设局网站推广软件app
  • 秦皇岛北京网站建设电商seo是什么意思啊
  • 湘潭网站开发公司惠州seo推广优化
  • 运城网站建设多少钱舆情监测分析系统
  • 网站建设策划结束语关键词搜索量查询