剑指 offer第21题-调整数组顺序使奇数位于偶数前面

需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。

剑指 offer第21题-调整数组顺序使奇数位于偶数前面_第1张图片
1、第一种方法:一个一个找,把奇数放到后面去:
时间复杂度o(n),空间复杂度o(n)

public class Solution {
    public void reOrderArray(int [] array) {
        //奇数的个数
        int odd=0;
        for(int x:array)
        {
            if(!isEven(x)) odd++;
        }
        int[] copy = array.clone();
        int i=0,j=odd;
        for(int num:copy){
            if(num%2==1){
                array[i++]=num;
            }else{
                array[j++]=num;
            }
        }
    }
    private boolean isEven(int x){
        return x%2==0;
    }
}

错误,j的赋值打错了

第二种,冒泡思想

public class Solution {
    public void reOrderArray(int [] array) {
        for(int i=array.length-1;i>0;i--){
            for(int j=0;j

错误:判断条件,一个是偶数,一个不是偶数,不是前面忘记加!了。

你可能感兴趣的:(算法题)