1516:奇数が偶数より前になるように配列順序を調整する@jobdu

1689 ワード

題目1516:奇数が偶数の前になるように配列順序を調整する
時間制限:1秒
メモリ制限:128メガ
特殊問題:いいえ
コミット:650
解決策:224
タイトルの説明:
整数配列を入力し、すべての奇数が配列の前半に位置し、すべての偶数が配列の後半に位置し、奇数と奇数、偶数と偶数の間の相対位置が変わらないことを保証する関数を実現します.
入力:
各入力ファイルには、テストケースのセットが含まれています.各テストケースについて、最初の行にnを入力し、その配列の数を表します.次の行にはn個の整数を入力します.配列内のn個の数を表します.
出力:
各テストケースに対応して、調整された配列を表すn個の行を入力します.数字と数字の間にはスペースがあり、最後の数字の後ろにはスペースがありません.
サンプル入力:
5
1 2 3 4 5

サンプル出力:
1 3 5 2 4

本の中の前後のポインタでの解法はこの問題に適用されません.元の順序が変わるからです.
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;


public class S14 {

	public static void main(String[] args) throws FileNotFoundException {
		BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.in"));
		System.setIn(in);
		Scanner cin = new Scanner(System.in);
		
		int[] buf = null;
		int i = 0;
		while (cin.hasNextInt()) {
			int n = cin.nextInt();
			buf = new int[n];
			for(i=0; i<n; i++){
				buf[i] = cin.nextInt();
			}
		}
		process(buf);
	}
	
	public static void process(int[] buf){
		int buflen = buf.length;
		int[] odd = new int[buflen];
		int[] even = new int[buflen];
		int j=0, k=0;
		for(int i=0; i<buflen; i++){
			if((buf[i]&1) == 1){
				odd[j++] = buf[i];
			}else{
				even[k++] = buf[i];
			}
		}
		for(int i=0; i<j; i++){
			System.out.print(odd[i] + " ");
		}
		for(int i=0; i<k; i++){
			if(i != k-1){
				System.out.print(even[i] + " ");
			}else{
				System.out.print(even[i]);
			}
		}
		System.out.println();
	}
	
	
}