题目描述
假设有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.自定义(要用到运算符重载)