A25176. 整数奇偶排序
填空题
中等
知识点
题目描述
整数奇偶排序
题目描述
给定10个整数的序列,要求对其重新排序。排序要求:
1.奇数在前,偶数在后;
2.奇数按从大到小排序;
3.偶数按从小到大排序。
输入
输入一行,包含10个整数,彼此以一个空格分开,每个整数的范围是大于等于0,小于等于30000。
输出
按照要求排序后输出一行,包含排序后的10个整数,数与数之间以一个空格分开。
输入样例
4 7 3 13 11 12 0 47 34 98输出样例
47 13 11 7 3 0 4 12 34 98参考答案
#include <bits/stdc++.h>
using namespace std;
bool cmpUp(int a, int b)//升序
{
return a < b;
}
bool cmpDown(int a, int b)//降序
{
return a > b;
}
int main()
{
int a, odd[15], even[15], oi = 0, ei = 0;//oi:odd中元素个数 ei:even中元素个数
for(int i = 1; i <= 10; ++i)
{
cin >> a;
if(a%2 == 0)
even[++ei] = a;//填充数组
else
odd[++oi] = a;
}
sort(odd+1, odd+1+oi, cmpDown);//奇数降序排序
sort(even+1, even+1+ei, cmpUp);//偶数升序排序
for(int i = 1; i <= oi; ++i)
cout << odd[i] << ' ';
for(int i = 1; i <= ei; ++i)
cout << even[i] << ' ';
return 0;
}答案解析
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a, int b)//返回a排在前面的条件
{
return a%2 == 1 && b%2 == 1 && a > b ||
a%2 == 0 && b%2 == 0 && a < b ||
a%2 == 1 && b%2 == 0;
}
int main()
{
int a[15];
for(int i = 1; i <= 10; ++i)
cin >> a[i];
sort(a+1, a+1+10, cmp);
for(int i = 1; i <= 10; ++i)
cout << a[i] << ' ';
return 0;
}
上一题
下一题