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

//思路一:
//暴力解法

//时间复杂度:O(n)
//空间复杂度:O(n)

//调整数组顺序使奇数位于偶数前面
public void reOrderArray(int [] array) {
    if(array==null || array.length==0){
        return;
    }
    int[] newArray = new int[array.length];
    int index=0;
    for(int i=0;i<array.length;i++){
        if(array[i]%2==1){
            newArray[index++] = array[i];
        }
    }
    for(int i=0;i<array.length;i++){
        if(array[i]%2==0){
            newArray[index++] = array[i];
        }
    }
    index=0;
    for(int num : newArray){
        array[index++] =num;
    }
}

@Test
public void test(){
    int[] nums={1,2,3,4,5,6,7};
    reOrderArray(nums);
}
//思路二:
//利用冒泡排序算法的思想:
//每次将偶数冒到最右边(冒泡排序是稳定排序,不用担心顺序问题)
//注意:冒泡排序中是将数字大的冒出,这里是将偶数冒出

//时间复杂度:O(n^2)
//空间复杂度:O(1)

//调整数组顺序使奇数位于偶数前面
public void reOrderArray(int [] array) {
    if(array==null || array.length==0){
        return;
    }
    int n = array.length;
    for(int i=n-1;i>=0;i--){
        for(int j=1;j<=i;j++){ //相邻元素对比,冒出偶数
            if(isEven(array[j-1]) && !isEven(array[j])){
                //array[j-1] 是偶数,array[j] 是奇数就交换
                swap(array,j-1,j);
            }
        }
    }
}

private void swap(int[] nums,int i,int j){
    int tmp = nums[i];
    nums[i] = nums[j];
    nums[j] = tmp;
}

//判断一个数是否是偶数
private boolean isEven(int num){
    return (num%2==0);
}

https://www.mianshi.onlinehttps://www.i9code.cn

本文由博客一文多发平台 OpenWrite 发布!

逃跑的眼镜_bvbEK5
7 声望0 粉丝