输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,不用保持相对位置不变,写个C++代码出来
时间: 2023-12-08 07:24:28 浏览: 74
好的,以下是一份C++代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
void reorderArray(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
while (left < right) {
while (left < right && nums[left] % 2 == 1) {
left++;
}
while (left < right && nums[right] % 2 == 0) {
right--;
}
if (left < right) {
swap(nums[left], nums[right]);
left++;
right--;
}
}
}
int main() {
vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9};
reorderArray(nums);
for (int i = 0; i < nums.size(); i++) {
cout << nums[i] << " ";
}
cout << endl;
return 0;
}
```
这里使用了双指针的方法,左指针left从数组左边开始向右遍历,找到第一个偶数;右指针right从数组右边开始向左遍历,找到第一个奇数;然后交换它们的位置。然后再继续移动left和right指针,重复上述步骤,直到left指针和right指针相遇。这样就可以实现将奇数与偶数分别放在数组的前半部分和后半部分。
阅读全文