题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
import java.util.ArrayList;
public class Solution {
public void reOrderArray(int [] array) {
if(array == null || array.length == 0){
return;
}
recursion(array, 0, array.length - 1);
}
public void recursion(int [] array, int left, int right) {
if(left == right){
return ;
}
int mid = (left + right) / 2;
recursion(array, left, mid);
recursion(array, mid + 1, right);
ArrayList a = new ArrayList();
int i = left;
for(; i <= mid; i++){
if(array[i] %2 == 1) {
a.add(array[i]);
}else{
break;
}
}
int j = mid + 1;
for(; j <= right; j++) {
if(array[j] %2 == 1){
a.add(array[j]);
}else{
break;
}
}
for(; i <= mid; i++) {
a.add(array[i]);
}
for(; j <= right; j++){
a.add(array[j]);
}
for(int k = 0; k < a.size(); k++) {
array[left ++] = (int)a.get(k);
}
}
public static void main(String[] args) {
Solution obj = new Solution();
int [] array = {1,2,3,4,5,6,7};
obj.reOrderArray(array);
for(int i : array)
System.out.println(i);
}
}