调整数组顺序使奇数位于偶数前面

题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

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);
    }
}

你可能感兴趣的:(调整数组顺序使奇数位于偶数前面)