题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
public class Solution { //时间复杂度为O(n^2),空间复杂度为O(1)
public void reOrderArray(int [] array) {
if(array.length<=1){
return;
}
boolean b=true;
while(b){
b=false;
for(int i=1; i<array.length; i++){
int a1=array[i-1]%2;
int a2=array[i]%2;
int temp;
if(a1==0 && a2!=0){
temp=array[i-1];
array[i-1]=array[i];
array[i]=temp;
b=true;
}
}
}
}
}
方法2:
public class Solution {//时间复杂度为O(n),空间复杂度为O(n)
public void reOrderArray(int [] array) {
if(array==null || array.length==0){
return;
}
int[] res=new int[array.length];
int i=0;
for(int j=0; j<array.length; j++){
if((array[j] & 1)!=0){
res[i]=array[j];
i++;
}
}
for(int j=0; j<array.length; j++){
if((array[j] & 1)==0){
res[i]=array[j];
i++;
}
}
for(int j=0; j<array.length; j++){
array[j]=res[j];
}
}
}