输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路:改编快排,为保证奇偶相对位置不变,每当发现奇数且偶数在前时,保存奇数值,将偶数到奇数之前的元素顺序后移。
void reOrderArray(vector<int> &array) {
int j=0;
for(int i=0;i<array.size();i++)
{
//i表示奇数位置,j表示偶数位置
if((array[i]%2)!=0)
{
if(i>j)
{
int k=i;
int temp=array[i];
while(k>j)
{
array[k]=array[k-1];
k--;
}
array[k]=temp;
//j++;
}
j++;
}
}
}