【Java语言】剑指offer系列之数组、双指针法----调整数组顺序使奇数位于偶数前面

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

分析:
暴力法:创建一个新的数组,长度和原数组一样。循环遍历原数组,对其元素进行取模操作%2,
%2得1证明是奇数,放在原数组第一位,下标+1;(因为要保证调整后奇数偶数得相对位置不变)
%2得0证明是偶数,放在新数组第一位,下标+1;
最后再遍历数组,将新数组接在原数组后面

具体代码实现如下:

/*
暴力法:创建一个新的数组,长度和原数组一样。循环遍历原数组,对其元素进行取模操作%2,
%2得1证明是奇数,放在原数组第一位,下标+1;(因为要保证调整后奇数偶数得相对位置不变)
%2得0证明是偶数,放在新数组第一位,下标+1;
最后再遍历数组,将新数组接在原数组后面
*/
public class Solution {
     
    public void reOrderArray(int [] array) {
     
        int l = array.length;// 获取数组长度
        int[] newArray = new int[l];// 创建新数组
        int a = 0, b = 0;// 用于计数
        for(int i = 0; i < l; i++){
     // 循环遍历数组
            if((array[i] % 2) == 1){
     //元素为奇数
            array[a] = array[i];//将奇数赋值给原数组
            a++;
            }else{
     // 元素为偶数
            newArray[b] = array[i];// 将偶数赋值给新数组
            b++;
            }
        }
        for(int i = 0; i < b; i++){
     //将新数组得偶数覆盖到原数组后面(奇数后)
            array[a+i] = newArray[i];
        }
    }
}

人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德

小白寄语:学如逆水行舟,不进则退。

你可能感兴趣的:(数据结构与算法基础,牛客网,剑指offer,java,数据结构,算法)