蒜术师给了你一个 1010 个整数的序列,要求对其重新排序。排序要求:
-
奇数在前,偶数在后;
-
奇数按从大到小排序;
-
偶数按从小到大排序。
输入格式
输入一行,包含 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100。
输出格式
按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开。
输入 | 输出 |
4 7 3 13 11 12 0 47 34 98 | 47 13 11 7 3 0 4 12 34 98 |
#include<stdio.h>
int main(){
int a[10],b[10],c[10],i,j,x=0,y=0,t;
for (i=0;i<10;i++){
scanf("%d",&a[i]);
//printf("%d ",a[i]);
}
for (i=0;i<10;i++){
if (a[i]%2==1){
b[x]=a[i];
x++;
}
else {
c[y]=a[i];
y++;
}
}
//printf("x=%d y=%d",x,y);
for(i=0;i<x;i++){
for(j=i+1;j<x;j++){
if(b[j]>b[i]){
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
printf("%d ",b[i]);
}
for(i=0;i<y;i++){
for(j=i+1;j<y;j++){
if(c[j]<c[i]){
t=c[i];
c[i]=c[j];
c[j]=t;
}
}
printf("%d ",c[i]);
}
return 0;
}
思路:优先找出奇数后找出偶数分别存于两个数组中,将这两个数组分别排序并输出。