java给定一个整数数组,将其中的奇数元素放在数组的前半部分,偶数元素放在数组的后半部分,同时保持奇数和偶数元素的相对顺序不变。
时间: 2024-10-19 11:17:29 浏览: 33
在 Java 中,你可以使用双指针法(Two Pointers Technique)来实现这个需求。首先,定义两个指针,一个 `left` 初始化在数组的第一个元素,另一个 `right` 初始指向数组的最后一个元素。然后按照以下步骤操作:
1. **遍历数组**:
- 检查 `left` 指向的元素是否为偶数。如果是偶数,不做任何改变,`left` 自动右移一位。
- 如果不是偶数,即为奇数,交换 `left` 和 `right` 指向的值,然后将 `left` 向右移动一位。
- 继续上述过程,直到 `left` 大于等于 `right`。
2. **结束条件**:
当 `left` 大于等于 `right` 时,表示已经完成了奇数和偶数元素的划分,因为它们的位置已经确定:所有奇数在前面,所有偶数在后面,并且各自的顺序得到了保留。
下面是一个简单的示例代码:
```java
public void sortArray(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
// 左指针寻找下一个奇数
while (left < right && nums[left] % 2 == 0) {
left++;
}
// 右指针寻找下一个偶数
while (left < right && nums[right] % 2 == 1) {
right--;
}
// 如果找到对应的奇偶数,交换位置
if (left < right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
}
```
阅读全文