标签:++ auth 剑指offer bar 数组 length int 标记 false
/** * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序, * 使得所有的奇数位于数组的前半部分,所有的偶数位于位于数 * 组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位 * 置不变。 * @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;
}
}
}
}标签:++ auth 剑指offer bar 数组 length int 标记 false
原文地址:http://blog.51cto.com/12222886/2061001