【九度OJ1516】|【劍指offer14】調整數組順序使奇數位於偶數前面

題目描述:

輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得全部的奇數位於數組的前半部分,全部的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。 java

輸入:

每一個輸入文件包含一組測試案例。
對於每一個測試案例,第一行輸入一個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);
		}
	}
}
相關文章
相關標籤/搜索