【九度OJ1516】|【剑指offer14】调整数组顺序使奇数位于偶数前面

题目描述:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

输入:

每个输入文件包含一组测试案例。
对于每个测试案例,第一行输入一个n,代表该数组中数字的个数。
接下来的一行输入n个整数。代表数组中的n个数。

输出:

对应每个测试案例,
输入一行n个数字,代表调整后的数组。注意,数字和数字之间用一个空格隔开,最后一个数字后面没有空格。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;

/**
 * 调整数组顺序使奇数位于偶数前面
 * @author aqia358
 * 
 */
public class Main {

	public static void merge(int[] a1, int p1, int a2[], int p2){
		int m = 0;
		int n = 0;
		while(m < p1){
			System.out.print(a1[m++]+" ");
		}
		while(n < p2 - 1){
			System.out.print(a2[n++]+" ");
		}
		System.out.print(a2[n]);
	}
	public static void main(String[] args) throws IOException {
		StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
		while(st.nextToken() != st.TT_EOF){
			int n = (int) st.nval;
			int[] a1 = new int[n];
			int[] a2 = new int[n];
			int p1 = 0;
			int p2 = 0;
			int count = 0;
			while(count < n){
				st.nextToken();
				int t = (int) st.nval;
				if(t%2 != 0){
					a1[p1++] = t;
				}else{
					a2[p2++] = t;
				}
				count++;
			}
			merge(a1,p1,a2,p2);
		}
	}
}



你可能感兴趣的:(java,九度OJ1516,调整数组顺序使奇数位于偶数前面,剑指offer14)