[STL][004]合并排序
Time Limit: 1000 ms Memory Limit: 65536 KBTotal Submit: 162 Accepted: 108
Description
给出一组数字,当有两个或两个以上相同数字时将两个数字合并,然后按照从小到大的顺序对数字进行排序。
Input
第一行输入一个整数T,表示排序数字个数;接下来一行输入T个整数。
Output
输出一行合并并排好序的数字
Sample Input
5
1 3 5 3 2
1 3 5 3 2
Sample Output
1 2 3 5
Hint
<set>
简单的STL中的set用法……同时正好对set的各个成员函数有个了解与深入……
#include <iostream>
#include <map>
#include <deque>
#include <queue> //包含优先队列
#include <stack>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
int main()
{
set<int>q;
set<int>::iterator it;
int t,i,n;
cin>>t;
for(i=0;i<t;i++)
{
cin>>n;
q.insert(n);
}
for(it=q.begin();it!=q.end();it++)
cout<<*it<<' ';
/*while(!q.empty())
{
it=q.begin(); //或者这样输出
cout<<*it<<' ';
q.erase(it);
}*/
cout<<endl;
return 0;
}
或者主函数也可以写成:
int main() { int t,i,n,a[1000]; cin>>t; for(i=0;i<t;i++) cin>>a[i]; set<int>q(a,a+t); //定义的时候直接对set中的q进行初始化 set<int>::iterator it; while(!q.empty()) { it=q.begin(); //用成员函数这样输出,而不用迭代器 cout<<*it<<' '; q.erase(it); } cout<<endl; return 0; }