/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @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;
}