c++编写程序:调整数组中元素的存放顺序,使得所有正数放置在数组的前部,负数放置在数组的后部
时间: 2025-01-04 19:39:46 浏览: 49
在C++中,你可以使用双指针法来实现这个功能。这种方法通常涉及两个指针,一个从数组的开始位置(通常是正数区域),另一个从数组的结束位置(通常是负数区域)开始。以下是基本步骤:
1. 定义两个指针,`start` 和 `end` 分别指向数组的起始和结束位置。
2. 当`start` 指向的位置仍然是正数时,将它与`end` 后面的元素比较,如果`end`后面的元素是负数,则交换它们的位置,然后`end`向前移动一位。
3. 同时,当`start` 不再小于 `end` 时,说明已处理完所有元素,此时数组中正数已在前面,负数在后面。
下面是一个简单的示例代码片段:
```cpp
#include <iostream>
using namespace std;
void sortPositiveNegative(int arr[], int n) {
int start = 0;
int end = n - 1;
while (start < end) {
// 如果start位置的元素是正数,并且end位置的元素是负数
if (arr[start] > 0 && arr[end] < 0) {
// 交换这两个位置的元素
swap(arr[start], arr[end]);
// 移动end指针到下一个位置
end--;
} else if (arr[start] <= 0) { // 如果start位置元素是非正数,直接移动start
start++;
} else { // 如果end位置元素是非负数,移动end指针到下一个位置
end--;
}
}
}
int main() {
int arr[] = {1, -2, 3, -4, 5, -6};
int n = sizeof(arr) / sizeof(arr[0]);
sortPositiveNegative(arr, n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
```
运行上述代码后,你将会看到数组中的正数排在前面,负数排在后面。
阅读全文
相关推荐















