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

	/*
	 * 遍历数组,遇到前偶后奇就交换,类似冒泡,感觉很笨重
	 */
	public void reOrderArray(int[] array) {
		int tmp;
		for (int i = 0; i < array.length; i++) {
			for (int j = array.length - 1; j > 0; j--) {
				if(array[j] % 2 != 0 && array[j - 1] % 2 == 0) {
					tmp = array[j];
					array[j] = array[j - 1];
					array[j - 1] = tmp;
				}
			}
		}
	}
/*
	 * 首先找到第一个奇数,将它放到数组首位,该数前面的数,
	 * 统统向后移动一位
	 */
	public void reOrderArray2(int[] array) {
		int m = 0;//标记奇数的个数  
        for(int i=0;i<array.length;i++){  
            if(array[i]%2==1){//找到的奇数  
                m++;  
                if(i==0)  
                    continue;  
                int tmp = array[i];//记录奇数  
                int ti = i;  
                for(;ti>=m;ti--){  
                    array[ti] = array[ti-1];//奇数之前的所有元素往后移动一位  
                }  
                array[m-1] = tmp;  
            }  
        } 
	}
}