013调整数组顺序使奇数位于偶数前面
题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
方法一:创建新数组,以空间换时间
思路:创建一个新数组,然后现将奇数取出来,然后再取偶数,最后用这个数组对原数组进行复制
代码:
public static void reOrderArray(int [] array) {
int[] res = new int[array.length];
int j=0;
for (int i = 0; i <array.length ; i++) {
if(array[i]%2==1){
res[j]=array[i];
j++;
}
}
for (int i = 0; i <array.length ; i++) {
if(array[i]%2==0){
res[j]=array[i];
j++;
}
}
for (int i = 0; i <array.length ; i++) {
array[i]=res[i];
}
}
方法二:原数组交换法
在原数组上进行修改,先找一个奇数,然后对之前的偶数都进行交换位置,直到没有偶数,然后下一个奇数,继续,直到没有奇数
代码:
public static void reOrderArray(int [] array) {
if(array==null||array.length==0) return;
for (int i = 0; i <array.length ; i++) {
if(array[i]%2==1){
int k=i;
for (int j = i-1; j >=0 ; j--) {
if(array[j]%2==0){
int temp =array[k];
array[k]=array[j];
array[j]=temp;
k=j;
}
}
}
}
}