您的位置:首页 > 其它

整数排序

2015-07-27 22:12 288 查看
实现输入一组大于等于0的整数,根据从小到大的顺序排序后输出,排序后有连续数时,只输出连续数中最小和最大的两个数

输入:

一组大于等于0的整数,不考虑非法输入,各个整数之间以逗号(“,”)分隔, 输入字符串的总长度小于等于100个字节。

输出:

排序后的值,各个整数之间以空格分隔。

样例输入: 1,4,3,110,2,90,7

样例输出: 1 4 7 90 110

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<algorithm>
#include<string>
#include<functional>
#include<sstream>
#include<set>
//#include<cmath>
using namespace std;
int result[1000];
int main()
{

string str;
getline(cin,str);
for(int i=0;i<str.size();i++)
{
if(str[i]==',')
{
str[i]=' ';
}
}
istringstream  in(str);
set<int> tempresult;
int temp;
while(in>>temp)
{

tempresult.insert(temp);
}
set<int>::iterator iter;
int length=0;
for(iter=tempresult.begin();iter!=tempresult.end();iter++)
{
result[length++]=*iter;
}
for(int i=0;i<length;)//游标指针向后移动
{
if(result[i+1]-result[i]!=1)
{
cout<<result[i]<<' ';
i++;
}
else
{
cout<<result[i]<<' ';//连续数的第一个数
while(result[i+1]-result[i]==1)
{
i++;
}
cout<<result[i]<<' ';//连续数的最后一个数
i++;

}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: