题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
public class Solution {
public void reOrderArray(int [] array) {
if(array==null || array.length<=0) return;
int flag = 0;
int i,j;
for(i=1; i<array.length;i++){
if((array[i]&1)==1 && (array[i-1]&1)==0){
flag = array[i];
for(j=i-1; j>=0 && (array[j]&1)==0; j--){
array[j+1] = array[j];
}
array[j+1] = flag;
}
}
}
}
这里的代码是满足牛客网上题目要求的,奇数排在数组的前半部分,偶数排在数组的后半部分,并且相对位置不变。这里使用插入排序法解决
int i=0;
int j=array.length-1;
while(i<j){
while(i<j&&array[I]&2==1){
i++;
}
while(i<j&&array[j]&2==0){
j--;
}
int temp=array[j];
array[j]=array[i];
array[i]=temp;
}
这一部分代码是满足原书要求的代码,数组前半部分是奇数,后半部分是偶数类似于快排