int* reOrderArrayTwo(int* array, int arrayLen, int* returnSize ) {
// write code here
/*int i,j=-1,k=-1; //i为公共变量,j指向偶数,k指向奇数
for(i=0;i<=arrayLen;i++){
if(array[i]%2==0&&j==-1){ //找到当前情况下第一个偶数
j=i;
continue;
}
if(array[i]%2==1&&k==-1){ //找到当前情况下第一个奇数
k=i;
continue;
}
if(j<k&&k!=-1&&j!=-1){ //如果此时偶数在奇数前面,并且k和j都指向有效位置 则交换,并把ijk归位
int temp;
temp=array[j];
array[j]=array[k];
array[k]=temp;
i=j;
j=-1;
k=-1;
}
if(j>k&&k!=-1&&j!=-1){ //否则再找下一个奇数,此时不需要交换
k=-1;
i=i-1; //以上代码思路正确,超过了时间复杂度限制。。。
}
}
*returnSize = arrayLen;
return array;*/
int end=arrayLen-1;
for(int i=0;i<end;i++){
if(array[i]%2==0){ //找到第一个偶数,然后从后面往前找奇数
while(array[end]%2==0&&end>i){ //如果end所指是偶数且end>i,end--
end--;
}
if(end==i) break; //如果end==i表明后面全是偶数,结束
int temp; //否则end指向奇数,而i<end i指向偶数,则进行二者交换
temp=array[i];
array[i]=array[end];
array[end]=temp;
}
}
*returnSize = arrayLen;
return array;
}