好友
阅读权限10
听众
最后登录1970-1-1
|
青史无疆
发表于 2016-9-9 21:08
题: 输入若干(不超过1000个)非负整数数字,请先取出为奇数的数字按从大到小排序,再取出偶数从小到大进行排序。
解决代码: [C++] 纯文本查看 复制代码 #include <iostream>
#include <stdlib.h>
#include <vector>
#include <algorithm>
using namespace std;
bool comp(const int &a,const int &b)
{
return a>b;
}
int Init(int *data,string input)
{
int index=0;
int startpos=0,stoppos=0;
int length;
length = input.length();
while(stoppos<input.length())
{
stoppos=input.find(" ",startpos);
if(-1==stoppos)
{
if(startpos<length)
{
*(data+index)=atoi(input.substr(startpos,stoppos-startpos).c_str());
++index;
}
break;
}
if(startpos!=stoppos)
{
*(data+index)=atoi(input.substr(startpos,stoppos-startpos).c_str());
++index;
}
startpos=stoppos+1;
}
return index;
}
void Sort_Spec(int *data,int count)
{
vector<int> value_j,value_o;
for(int i=0;i<count;++i)
{
if(*(data+i)%2!=0)
{
value_j.push_back(*(data+i));
}
else
{
value_o.push_back(*(data+i));
}
}
sort(value_o.begin(),value_o.end());
sort(value_j.begin(),value_j.end(),comp);
vector<int>::iterator it_j,it_o;
int index=0;
for(it_j=value_j.begin();it_j!=value_j.end();it_j++)
{
*(data+index)=*it_j;
index++;
}
for(it_o=value_o.begin();it_o!=value_o.end();it_o++)
{
*(data+index)=*it_o;
index++;
}
}
int main()
{
string input;
getline(cin,input);
int data[1000];
int count=Init(data,input);
Sort_Spec(data,count);
for(int i=0;i<count;++i)
{
cout << data[i] << " ";
}
return 0;
}
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|