DoublePoint

题目描述[原题链接][https://www.acwing.com/problem/content/description/30/]

输入一个整数数组,实现一个函数来调整该数组中数字的顺序。

使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。

样例

1
2
3
输入:[1,2,3,4,5]

输出: [1,3,5,2,4]

算法描述

定义两个指针,一个从左开始找偶数,一个从右开始找奇数,直到指针相遇结束;

C++代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
void reOrderArray(vector<int> &array) {
int l = 0;
int r = array.size()-1;
while(r>l){
while(array[l]%2)l++;
while(!(array[r]%2))r--;
if(r>l){
int t = array[l];
array[l] = array[r];
array[r]=t;
}
}
}
};

Java代码

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public void reOrderArray(int [] array) {
int l=0,r=array.length-1;
while(r>l){
while(array[l]%2==1)l++;
while(array[r]%2==0)r--;
if(r<=l)return;
int t=array[l];
array[l]=array[r];
array[r]=t;
}
}
}