题目描述:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路:
使用空间换时间的方法,首先统计奇数和偶数的个数,然后开辟奇数数组和偶数数组分别存放奇数和偶数,最后再将这个数值赋值给原先数组。
代码(java):
public class Solution {
public void reOrderArray(int [] array) {
int len=array.length;
int old=0;//奇数的个数
int even=0;//偶数的个数
for(int val:array){
if(val%2!=0)old++;
else{
even++;
}
}
int []old_array=new int[old];
int []even_array=new int[even];
int i=0,j=0;
for(int val:array){
if(val%2==0){
even_array[i]=val;
i++;
}
else{
old_array[j]=val;
j++;
}
}
for(i=0;i<old;i++){
array[i]=old_array[i];
}
for(i=0;i<even;i++){
array[i+old]=even_array[i];
}
}
}