题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
import java.util.Arrays;
/**
* @author yuan
* @date 2019/2/10
* @description
*/
public class Solution {
public void reOrderArray(int [] array) {
if (array == null || array.length == 0) {
return;
}
int[] even = new int[array.length];
int[] odd = new int[array.length];
int index1 = 0, index2 = 0;
for (int i = 0, len = array.length; i < len; i++) {
if ((array[i] & 1) == 1) {
// 奇数
even[index1++] = array[i];
} else {
// 偶数
odd[index2++] = array[i];
}
}
for (int i = 0; i < index1; i++) {
array[i] = even[i];
}
for (int i = 0; i < index2; i++) {
array[index1 + i] = odd[i];
}
}
public static void main(String[] args) {
Solution obj = new Solution();
int[] a = {1, 2, 3, 4, 5, 6, 7};
obj.reOrderArray(a);
Arrays.stream(a).forEach(i -> System.out.print(i + " "));
}
}