九度OJ:题目1117:整数奇偶排序

 1 #include<stdio.h>
 2 #include<algorithm>
 3 using namespace std;
 4 const int N=10;
 5 int main()
 6 {
 7     int arr[10],odd[10],even[10];
 8     while(scanf("%d",&arr[0])!=EOF)
 9         {
10         for(int i=1 ; i<N ; ++i)
11             scanf("%d",&arr[i]);
12         sort(arr,arr+N);
13         int io=0,ie=0;
14         for(int i=0 ; i<N ; ++i)
15             if(arr[i]%2==0)
16                 even[ie++]=arr[i];
17             else
18                 odd[io++]=arr[i];
19         bool mark=0;                    //标记有没有奇数
20         if(io!=0)
21             mark=1;
22         while(io!=0)                    //从后向前打印奇数
23         {
24             printf("%d",odd[--io]);
25             if(io!=0)
26                 printf(" ");
27         }
28         int cnt=0;
29         while(cnt!=ie)                    //从前向后打印偶数
30         {
31             if(0==cnt && 0==mark)        //【caution】之前没有奇数,开头不能为空格
32                 printf("%d",even[cnt++]);
33             printf(" %d",even[cnt++]);
34         }
35         printf("\n");
36     }
37     return 0;
38 }

由于数据可能是有机有偶,只有奇数,只有偶数,要分不同情况讨论,空格的处理非常重要

posted on 2015-04-22 19:47  Evence  阅读(309)  评论(0编辑  收藏  举报