蒜术师给了你一个 10 个整数的序列,要求对其重新排序。排序要求:
-
奇数在前,偶数在后;
-
奇数按从大到小排序;
-
偶数按从小到大排序。
输入格式
输入一行,包含 10 个整数,彼此以一个空格分开,每个整数的范围是大于等于 0,小于等于 100。
输出格式
按照要求排序后输出一行,包含排序后的 10 个整数,数与数之间以一个空格分开。
Sample Input
4 7 3 13 11 12 0 47 34 98
Sample Output
47 13 11 7 3 0 4 12 34 98
#include<stdio.h>
int main(){
int i,j=0,k=0,n,a[99],b[99],c[99],j1,j2,temp1,temp2;
for(i=0;i<10;i++){
scanf("%d",&a[i]);//输入10个数字存储在a数组里
}
for(i=0;i<10;i++){//先用一个for循环把奇数和偶数分别存储在数组c和b里
if(a[i]%2==0){
b[j]=a[i];
j++;
}
else {
c[k]=a[i];//本题不再具体讲述插入排序法 ,有兴趣可翻开我之前笔记
k++;
}
}
for(i=1;i<k;i++){
temp1=c[i];
j1=i-1;
while(c[j1]<temp1&&j1>=0)//再使用插入排序法,奇数从大到小 c[j1]<temp1&&j1>=0
{ c[j1+1]=c[j1];
j1--;
}
c[j1+1]=temp1;
}
for(i=0;i<k;i++)
{
printf("%d ",c[i]);//排完顺序输出
}
for(i=1;i<j;i++)
{
temp2=b[i];
j2=i-1;
while(b[j2]>temp2&&j2>=0)//再使用插入排序法,奇数从大到小 b[j2]>temp2&&j2>=0
{
b[j2+1]=b[j2];
j2--;
}
b[j2+1]=temp2;
}
for(i=0;i<j;i++)
{
printf("%d ",b[i]);//排完顺序输出
}
}