java定义一个数组奇数放在数组的左边,偶数放在数组的右边。
时间: 2023-08-28 21:06:36 浏览: 169
可以使用双指针法,一个指针从左往右扫描奇数,一个指针从右往左扫描偶数,然后交换它们的位置。以下是Java代码实现:
```java
public void oddEvenSort(int[] nums) {
int left = 0, right = nums.length - 1;
while (left < right) {
while (left < right && nums[left] % 2 != 0) {
left++;
}
while (left < right && nums[right] % 2 == 0) {
right--;
}
if (left < right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
right--;
}
}
}
```
这里使用了两个while循环分别找到第一个偶数和第一个奇数,然后交换它们的位置。循环的条件是left < right,即左指针不能超过右指针。最后数组中奇数都在左边,偶数都在右边。
相关问题
java定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。
可以使用双指针法,定义左指针left和右指针right,left指向数组的最左端,right指向数组的最右端。如果left指向的数为奇数,则left向右移动一位;如果right指向的数为偶数,则right向左移动一位;如果left指向的数为偶数且right指向的数为奇数,则交换它们。交换后left向右移动一位,right向左移动一位,直到left>=right为止。
以下是Java实现代码:
```java
public class Main {
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int left = 0, right = nums.length - 1;
while (left < right) {
if (nums[left] % 2 == 1) {
left++;
} else if (nums[right] % 2 == 0) {
right--;
} else {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
right--;
}
}
for (int num : nums) {
System.out.print(num + " ");
}
}
}
```
输出结果为:1 9 3 7 5 6 4 2 8
java中一个数组中把奇数放在数组的左边,偶数放在数组的右边怎么做
您可以使用双指针法来实现这个要求。具体步骤如下:
1. 定义两个指针,一个指向数组的起始位置,称为left,另一个指向数组的末尾位置,称为right。
2. 循环遍历数组,当left指针小于等于right指针时执行以下步骤:
- 如果arr[left]是奇数,则left指针向右移动一位。
- 如果arr[right]是偶数,则right指针向左移动一位。
- 如果arr[left]是偶数且arr[right]是奇数,则交换arr[left]和arr[right]的值,并将left指针向右移动一位,right指针向左移动一位。
3. 当left指针大于right指针时,数组中的奇数已经全部移动到了左边,偶数已经全部移动到了右边。
以下是使用Java代码实现上述逻辑的示例:
```java
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6};
rearrangeArray(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
public static void rearrangeArray(int[] arr) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
if (arr[left] % 2 == 1) {
left++;
} else if (arr[right] % 2 == 0) {
right--;
} else {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
}
```
上述代码输出结果为:1 5 3 4 2 6,奇数放在了数组的左边,偶数放在了数组的右边。
阅读全文