1003.奇偶排序
Time Limit: 1000 MS Memory Limit: 32768 KB
描述
给定一个存放正数的数组,元素个数视输入情况而定,重新排列数组使得数组左边为奇数,右边为偶数,且保证奇数和偶数之间元素相对位置不变。
输入
输入由多组测试数据组成。第一行输入一个整数t,表示测试数据的组数。
输入字符串的格式为:“操作数1 操作数2 … 操作数n”,“操作数”与“操作数”之间以一个空格隔开。
输出
输出有t行,每行依次对应一组测试数据的运算结果。
示例输入
示例输出
7 1 9 32 56 32
23 11 3 2 68 98 2 68 100
3 5 1 23 567 3 12 22 876 2 56 78
解题思路
可以对输入的数组进行简单的两边遍历,
第一遍将所有奇数置于一个新的数组内,
第二遍将所有偶数放置在奇数后面即可
Ac源码(Java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int times= sc.nextInt(); sc.nextLine(); String[] counts = new String[times]; for (int i = 0; i < times; i++){ counts[i] = sc.nextLine(); } sc.close(); String[] strArr; String outStr; int[] intArr, outArr; int counter; for (int i = 0; i < times; i++){ strArr = counts[i].split(" "); counter = 0; intArr = new int[strArr.length]; outArr = new int[strArr.length]; for (int j = 0; j < strArr.length; j++){ intArr[j] = Integer.parseInt(strArr[j]); } for (int inOf : intArr){ if(inOf % 2 == 1){ outArr[counter++] = inOf; } } for (int inOf : intArr){ if(inOf % 2 == 0){ outArr[counter++] = inOf; } } outStr = Arrays.toString(outArr).replaceAll(",", ""); System.out.println(outStr.substring(1, outStr.length()-1)); } } } |