用Java写:将一个int型数组中所有正数放到所有负数之后
时间: 2024-04-08 13:35:04 浏览: 22
以下是使用Java代码将一个int型数组中的所有正数放到所有负数之后的示例:
```java
import java.util.Arrays;
public class SeparatePositiveAndNegative {
public static void main(String[] args) {
int[] nums = {1, -2, 3, -4, 5, -6, 7, -8};
separatePositiveAndNegative(nums);
System.out.println("调整后的数组为:" + Arrays.toString(nums));
}
public static void separatePositiveAndNegative(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
// 左边找到第一个负数
while (left < right && nums[left] > 0) {
left++;
}
// 右边找到第一个正数
while (left < right && nums[right] < 0) {
right--;
}
if (left < right) {
// 交换正数和负数的位置
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
}
}
```
这段代码中,我们使用了双指针法来实现将正数放到负数之后的操作。左指针`left`从数组的起始位置开始向右移动,找到第一个负数;右指针`right`从数组的末尾位置开始向左移动,找到第一个正数。然后交换左右指针所指向的元素。重复这个过程直到左指针不再小于右指针。最终,所有正数都被放到了所有负数之后。运行以上代码输出的结果为:调整后的数组为:[-2, -4, -6, -8, 5, 7, 3, 1]。