排序之优先队列

题目描述
假设有n 个数据(1<=n<=100),将其按从小到大排序。
输入
输入由两行组成:第一行有一个整数,n(1≤n≤100);n表示待排序的数据个数。第2行有n个非负实数mi(1≤i≤n)((1≤mi<1000),小数点后保留1位)。
输出
输出有一行,共n个实数(小数点后保留1位),按从小到大排序,两个数之间用空格隔开。
本题我用优先队列写的(目的是熟悉优先队列)

#include <bits/stdc++.h>
using namespace std;
int main()
{
   /* priority_queue <int> a[2];
    int n,k;
    cin>>n>>k;*/
    priority_queue<float,vector<float>,greater<float> >a;//要有空格!!!
    int n;
    float x;
    cin>>n;
    while(n--)
    {
        cin>>x;
        a.push(x);
    }
    while(!a.empty())
    {
        cout<<a.top()<<endl;
        a.pop();
    }
}

优先队列:
1.大顶堆
默认都是大顶堆
priority_queue c
当然也可以
priority_queue<int, vector, less > c(空格要注意,诸位)
2.小顶堆
priority_queue<int, vector, greater > c(空格要注意,诸位)
小总结一下:其实优先队列这个类有三个参数
分别是1.int类型2.动态数组(其实若类没有限制大小都是动态数组)3.运算符(个人认为跟类差不多(本人c++还在学,献丑了));
int数据感觉存储的是个数,而vector存储的是你输入的值,运算符则是排序的方式(其实优先队列就是一个动态数组,按特定的方式排序罢了);
3.自定义(要用到运算符重载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值