题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
题解:将整数数组中的奇数放在一个数组,将偶数放在另一个数组中,然后合并这两个数组的数据。
public class Solution {
public void reOrderArray(int[] array) {
//空数组,长度为1的数组或者是null则直接不用计算
if (array == null || array.length == 0 || array.length == 1) {
return;
} else {
//定义两个数组存放数据,一个放奇数,一个放偶数
//数组长度为传入的数组array的长度,防止array存放的全是偶数或者奇数的情况
int arr1[] = new int[array.length];
int arr2[] = new int[array.length];
//定义两个数记录奇数有几个,偶数有几个
int ji = 0,ao = 0;
//遍历array
for(int i = 0;i < array.length;i++) {
//判断是否是奇数
if(array[i] % 2 != 0) {
arr1[ji++]=array[i];
}else {
arr2[ao++]=array[i];
}
}
//将奇数放入array中
for(int i = 0;i < ji;i++) {
array[i] = arr1[i];
}
for(int i = 0;i < ao;i++) {
//在奇数的后面按顺序放入偶数
array[ji + i] = arr2[i];
}
}
}
}