题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路:1. 从头开始找到第一个偶数的位置i。
2.从i+1开始找到第一个奇数j。
3.终止条件j到了数组最后。
public class Solution {
public void reOrderArray(int [] array) {
int start = 0;
while(start<array.length){
//查找到第一个偶数指针
while(start<array.length&&array[start]%2!=0){
start++;
}
int j = start+1;
//查找到第一个奇数指针
while(j<array.length&&array[j]%2==0){
j++;
}
//start和j之间元素移动
if(j<array.length){
int temp = array[j];
for(int i=j; i>start; i--){
array[i]=array[i-1];
}
array[start] = temp;
}else{
break;
}
}
}
}