难度系数 ⭐
时间限制 C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
题目内容 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路 遍历数组,分别将奇数和偶数顺序记下,然后依次将奇数和偶数重新填入数组种。注意,使用随机快排无法实现次序不变。
package nowcoder;
import java.util.ArrayList;
import java.util.Arrays;
public class No10 {
public static void reOrderArray(int [] array) {
ArrayList<Integer> f1 = new ArrayList<>();
ArrayList<Integer> f2 = new ArrayList<>();
for (int value : array) {
if (value % 2 == 1) f1.add(value);
else f2.add(value);
}
int i = 0;
for (int value : f1)
array[i++] = value;
for (int value : f2)
array[i++] = value;
}
public static void main(String[] args){
int [] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
reOrderArray(arr);
System.out.println(Arrays.toString(arr));
}
}