/**
* 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,
* 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数
* 组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位
* 置不变。
* @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;
}
}
}
}
转载于:https://blog.51cto.com/12222886/2061001