测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A19851. 奇偶排序

填空题 容易

题目描述

奇偶排序

题目描述

小明最近在学习排序算法。老师说在排序算法中两个数字的比较可能是简单的比大小,也可能是一个复杂的逻辑表达式。为了测试小明的学习情况,老师给了他一个包含10个整数的序列,要求对其重新排序。排序要求:

(1)奇数在前,偶数在后;

(2)奇数按从大到小排序;

(3)偶数按从小到大排序。

输入格式

仅一行,10个整数,用空格分隔。

输出格式

仅一行,排序结果,用一个空格分隔。

输入样例1

4 7 3 13 11 12 0 47 34 98

输出样例1

47 13 11 7 3 0 4 12 34 98

输入样例2

8 22 55 11 3 2 4 1 56 4

输出样例2

55 11 3 1 2 4 4 8 22 56

参考答案

参考1: #include <stdio.h> #include <iostream> #include <algorithm> using namespace std; int a[10]={0}; int b[10]={0}; int main(int argc, char *argv[]) { int n,al,bl,i; al=bl=0; for(i=0;i<10;i++){ scanf("%d",&n); if(n%2==0) b[bl]=n;bl++; else a[al]=n;al++; } sort(a,a+al); for(i=al-1;i>=0;i--)printf("%d ",a[i]); sort(b,b+bl); for(i=0;i<bl;i++)printf("%d ",b[i]); return 0; } 参考2: #include <stdio.h> #include <iostream> #include <algorithm> using namespace std; int cmp(int x,int y) { if(x%2!=y%2) return x%2>y%2; if(x%2==0) return x<y; else return x>y; } int main(int argc, char *argv[]) { int i,j,a[10]={0}; for(i=0;i<10;i++)scanf("%d",&a[i]); sort(a,a+10,cmp); for(i=0;i<10;i++)printf("%d ",a[i]); return 0; }
上一题 下一题