1. 本题知识点
数组
2. 题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
例如:
Input:
[1,2,3,4,5]
Output:
[1,3,5,2,4]
3. 解题思路
创建一个奇数数组和一个偶数数组,将原数组中的奇数和偶数分别加入其中,最后将奇数数组和偶数数组赋值给原数组。
原数组:[1,2,3,4,5]
奇数数组:[1,3,5]
偶数数组:[2,4]
赋值给原数组:[1,3,5,2,4]
4.代码
public class Solution {
/**
* 调整数组顺序使奇数位于偶数前面
* 并保证奇数和奇数,偶数和偶数之间的相对位置不变
*
* @param array
*/
public void reOrderArray(int[] array) {
// 偶数数组
int[] evenArray = new int[array.length];
// 奇数数组
int[] oddArray = new int[array.length];
// 偶数个数
int evenNum = 0;
// 奇数个数
int oddNum = 0;
// 遍历原数组
for (int i = 0; i < array.length; i++) {
// 当前元素为偶数,则加入偶数数组
if (array[i] % 2 == 0) {
evenArray[evenNum] = array[i];
evenNum++;
}
// 当前元素为奇数,则加入奇数数组
else {
oddArray[oddNum] = array[i];
oddNum++;
}
}
// 将奇数数组和偶数数组赋值给原数组
System.arraycopy(oddArray, 0, array, 0, oddNum);
System.arraycopy(evenArray, 0, array, oddNum, evenNum);
}
}