题目:
给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。
代码:
int* sortArrayByParityII(int* A, int ASize, int* returnSize){
int i=0,j=1,t;
while (i<ASize&&j<ASize){
while (i<ASize&&A[i]%2==0){
i+=2;
}
while(j<ASize&&A[j]%2==1){
j+=2;
}
if(i<ASize&&j<ASize){
t=A[i];
A[i]=A[j];
A[j]=t;
}
}
*returnSize = ASize;y
return A;
}
思路:
定义两个数组下标i和j其中i=0,j=1,用于遍历这个数组。当下标i对应的数组元素值为奇数时,停止遍历i转向遍历j。当下标j对应的数组元素值为偶数时,停止遍历 j。之后交换这两个下标对应的数组元素的值,继续重复步上述骤,直到i与j>ASize.
运行结果: