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

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

实现语言:Java

public class Solution {
    public void reOrderArray(int [] array) {
        int len=array.length;
        if(len==0||array==null){
            return;
        }
        int i=0;
        int j=0;
        while(i<len){
            while(i<len&&!isEven(array[i])){
                ++i;
            }
            j=i+1;
            while(j<len&&isEven(array[j])){
                ++j;
            }
            if(j<len){
                int tmp=array[j];
                for(int k=j-1;k>=i;--k){
                    array[k+1]=array[k];
                }
                array[i++]=tmp;
            }else{
                break;
            }
        }
    }
    private boolean isEven(int num){
        if(num%2==0){
            return true;
        }
        return false;
    }
}

 实现语言:Java

类似冒泡算法,前偶后奇数就交换

public class Solution {
    public void reOrderArray(int [] array) {
        if(array==null||array.length==0){
            return;
        }
        for(int i=0;i<array.length;++i){
            for(int j=array.length-1;j>i;--j){
                if(array[j]%2==1&&array[j-1]%2==0){
                    array[j-1]=array[j]+array[j-1];
                    array[j]=array[j-1]-array[j];
                    array[j-1]=array[j-1]-array[j];
                }
            }
        }
    }
}

 

posted on 2018-12-29 14:53  lina2014  阅读(82)  评论(0编辑  收藏  举报

导航