奇偶数入座

奇偶数入座
描述: 将输入的一串10个整数进行从小到大排序,但是要求偶数放在偶数位置上,奇数放在奇数位置上。缺失的位置由0补齐,输入中不会有0。

运行时间限制: 无限制
内存限制: 128 MByte
输入: 输入10组随机整数

输出: 按照规则排序后输出

样例输入: 53 8 21 43 3 7 51 62 13 68

样例输出: 3 8 7 62 13 68 21 0 43 0 51 0 53

答案提示:

 

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.util.ArrayList;
 5 
 6 public class Sort {
 7     //排序
 8     public static void sort(ArrayList<Integer> arr){
 9         for (int i = 0; i < arr.size(); i++) {
10             for (int j = 0; j < i; j++) {
11                 if (arr.get(j) > arr.get(j+1)) {
12                     int tmp = arr.get(j);
13                     arr.set(j, arr.get(j+1));
14                     arr.set(j+1, tmp);
15                 }
16             }
17         }
18     }
19 
20     public static  ArrayList<Integer> getSort(String str) {
21 
22         ArrayList<Integer> even = new ArrayList<Integer>();
23         ArrayList<Integer> odd = new ArrayList<Integer>();
24         ArrayList<Integer> total = new ArrayList<Integer>();
25         String[] in = str.split(" ");
26         
27         for (int i = 0; i < in.length; i++) {
28             // 划分奇数和偶数
29             if (Integer.valueOf(in[i]) % 2 == 0) {
30                 even.add(Integer.valueOf(in[i]));
31             } else {
32                 odd.add(Integer.valueOf(in[i]));
33             }
34         }        
35 
36         //分别对奇数和偶数排序
37         Sort.sort(odd);
38         Sort.sort(even);
39 
40         // 不够的用0填充,奇数少
41         if (odd.size() >= even.size()) {
42             int size = odd.size() - even.size();
43             //System.out.println("差值:"+size);
44             for (int j = 0; j < size; j++) {
45                 even.add(0);
46             }
47         } else {
48             //如果偶数少
49             int size = even.size() - odd.size();
50             for (int j = 0; j < size ; j++) {
51                 odd.add(0);
52             }
53         }
54         //将后来的全部输存入数组
55         int m = odd.size();
56         System.out.println("m="+m);
57         for (int j = 0; j < m; j++) {
58             total.add(odd.get(j));
59             total.add(even.get(j));
60         }
61         //去除最后一个0
62         if (total.get(total.size()-1)==0) {
63             total.remove(total.size()-1);
64         }
65         System.out.println("最后排序结果:");
66         for (int i = 0; i < total.size(); i++) {
67             System.out.print(total.get(i) + " ");
68         }
69         return total;
70     }
71 
72     public static void main(String[] args) {
73 
74         //String input = "53 8 21 43 3 7 51 62 13 68";
75         BufferedReader buf = new BufferedReader(
76                 new InputStreamReader(System.in));
77         try {
78             String str = buf.readLine();
79             getSort(str);
80         } catch (IOException e) {
81             e.printStackTrace();
82         }
83     
84     }
85 }

 

 

 

posted @ 2013-10-13 13:47  neuhxy  阅读(407)  评论(0编辑  收藏  举报