题目:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。
思路:
设置两个指针,一个指向开头设为i并从前往后遍历,一个指向结尾设为j并从后往前遍历。当i读到当前数为奇数时,i继续往后走,当读到偶数时则停下。j从后往前遍历,同理。当两指针都停下,则交换数字。最终当i>=j时,循环结束。
public class Solution {
public void ReorderOddEven(int[] array){
int length = array.length;
if (length<=1) return;
int i = 0;
int j = length-1;
boolean num1iseven = false;
boolean num2isodd = false;
while (i<j){
if (array[i]%2==0) {num1iseven=true;}
if (array[i]%2==1) {i++;}
if (array[j]%2==0) {j--;}
if (array[j]%2==1) {num2isodd=true;}
if (num1iseven&&num2isodd){
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
num1iseven = false;
num2isodd = false;
}
}
}
}