问题 H: 整数奇偶排序
时间限制: 1 Sec 内存限制: 32 MB
献花: 41 解决: 36
[献花][花圈][TK题库]
题目描述
输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求:
1.先输出其中的奇数,并按从大到小排列;
2.然后输出其中的偶数,并按从小到大排列。
输入
任意排序的10个整数(0~100),彼此以空格分隔。
输出
可能有多组测试数据,对于每组数据,按照要求排序后输出,由空格分隔。
样例输入
0 56 19 81 59 48 35 90 83 75
17 86 71 51 30 1 9 36 14 16
样例输出
83 81 75 59 35 19 0 48 56 90
71 51 17 9 1 14 16 30 36 86
提示
多组数据,注意输出格式
测试数据可能有很多组,请使用while(cin>>a[0]>>a[1]>>…>>a[9])类似的做法来实现;
输入数据随机,有可能相等。
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
const int MaxN = 10;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
#ifdef _DEBUG
ifstream cin("data.txt");
#endif // _DEBUG
int n[MaxN],Odd[MaxN],Even[MaxN],oddN,EvenN;
while (cin >> n[0] >> n[1] >> n[2] >> n[3] >> n[4] >> n[5] >> n[6] >> n[7] >> n[8] >> n[9])
{
oddN = EvenN = 0;
for (int i = 0; i < 10; ++i)
{
if (n[i] % 2)//奇数
Odd[oddN++] = n[i];
else
Even[EvenN++] = n[i];
}
sort(Odd, Odd + oddN,cmp);//奇数非升序排序
sort(Even, Even + EvenN);
for (int i = 0; i < oddN; ++i)
cout << Odd[i] << " ";
for (int i = 0; i < EvenN; ++i)
{
cout << Even[i];
if (i != EvenN - 1)
cout << " ";
}
cout << endl;
}
#ifdef _DEBUG
cin.close();
system("pause");
#endif // _DEBUG
return 0;
}
/**************************************************************
Problem: 2080
User: Sharwen
Language: C++
Result: 升仙
Time:1 ms
Memory:1712 kb
****************************************************************/