将负数移到正数前面
时间: 2024-01-15 20:12:14 浏览: 29
实现这个功能的方法与将奇数移到偶数前面类似,同样可以使用双指针。一个指向数组的开头,一个指向数组的末尾。从开头开始遍历数组,当遇到正数时停下来,从末尾开始遍历数组,当遇到负数时停下来,然后交换这两个位置上的数值。继续这个过程,直到两个指针相遇为止。这样就能将所有负数移到所有正数前面。
以下是对应的代码实现:
```
void moveNegativeBeforePositive(int arr[], int length) {
int left = 0; // 指向数组开头的指针
int right = length - 1; // 指向数组末尾的指针
while (left < right) {
// 从开头开始遍历数组,找到正数
while (left < right && arr[left] >= 0) {
left++;
}
// 从末尾开始遍历数组,找到负数
while (left < right && arr[right] < 0) {
right--;
}
// 交换负数和正数的位置
if (left < right) {
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
}
```
可以通过调用 `moveNegativeBeforePositive` 函数来实现将负数移到正数前面。需要注意的是,这个函数只能处理整数数组,对于其他类型的数组需要做相应的修改。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)