蒜术师给了你一个 1010 个整数的序列,要求对其重新排序。排序要求:
奇数在前,偶数在后;
奇数按从大到小排序;
偶数按从小到大排序。
输入格式
输入一行,包含 1010 个整数,彼此以一个空格分开,每个整数的范围是大于等于 00,小于等于 100100。
输出格式
按照要求排序后输出一行,包含排序后的 1010 个整数,数与数之间以一个空格分开。
Sample Input
4 7 3 13 11 12 0 47 34 98Sample Output
47 13 11 7 3 0 4 12 34 98#include <stdio.h> int main () { int a[10]; int i; for (i=0;i<10;i++)//利用for循环录入数据 { scanf("%d",&a[i]); } int j=0,b[10],cnt=0;//将奇数存入数组b for (i=0;i<10;i++) { if (a[i]%2!=0) { b[j++]=a[i]; cnt++;//记录数组b中数据的个数 } } int k=0,c[10],cmt=0;//将偶数存入数组c for (i=0;i<10;i++) { if (a[i]%2==0) { c[k++]=a[i]; cmt++;//记录数组c中的个数 } } int temp,l;//利用temp记录暂存数组 for (j=1;j<cnt;j++) { l=j-1; temp=b[j]; while (b[l]<temp&&l>=0)//l>=0用来跳出循环 { b[l+1]=b[l]; l--; } b[++l]=temp; }//利用for循环降序排列奇数 int m,tem; for (k=1;k<cmt;k++) { m=k-1; tem=c[k]; while (c[m]>tem&&m>=0) { c[m+1]=c[m]; m--; } c[++m]=tem; }//利用for循环升序排列偶数 for (j=0;j<cnt;j++) { printf("%d ",b[j]); }//输出数组奇数部分 for (k=0;k<cmt;k++) { printf("%d ",c[k]); }//输出数组偶数部分 printf("\n"); return 0; }
相关文章
- 03-08WPF - 简单的UI框架 - 仪表盘
- 03-08C++ set容器简单用法
- 03-08python2.7 zipfile 的简单用法
- 03-08UESTC 1584 Washi与Sonochi的约定【树状数组裸题+排序】
- 03-08Storm的一个简单例子
- 03-08城市名排序
- 03-08拓扑排序通俗描述及队列实现模板
- 03-08树-101镜像树-简单-20210813
- 03-08拓扑排序的经典题目 UVA1572
- 03-08jqgrid 列表头 根据选中顺序排序和显示