/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @param arrayLen int array数组长度
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
/*本文思路是首先统计出数组内奇数元素(odd_num)的个数,然后新建一个等长的数组。
数组里面有两个变量,head变量的下标从0到odd_num-1,rear变量的下标从odd_num到arrayLen-1,顺序遍历原数组碰到为奇数的存放到新数组的前面,head变量向后移动一位,反之存放到新数组的后面,rear变量向后移动一位。
最后把新数组的值依次赋值给原数组。*/
int* reOrderArrayTwo(int* array, int arrayLen, int* returnSize ) {
// 统计出数组内奇数元素的个数
int odd_num = 0;
for (int i = 0; i < arrayLen; i++) {
if (array[i] % 2 == 1) {
odd_num++;
}
}
// 新建一个等长的数组以及数组内的两个变量
int storage[arrayLen];
int head = 0, rear = odd_num;
// 把数组内奇偶元素分开存放到新数组
for (int i = 0; i < arrayLen; i++) {
if (array[i] % 2 == 1) {
storage[head]=array[i];
head++;
}
else{
storage[rear]=array[i];
rear++;
}
}
// 把新数组的值赋值给原数组
for (int i = 0; i < arrayLen; i++) {
array[i]=storage[i];
}
*returnSize=arrayLen;
return array;
}