方法1——用一个新数组接收原数组中的偶数,通过一次遍历,把奇数留在原数组,按顺序从下标0开始放;把偶数依次放在新数组。
一次遍历完后,把偶数数组元素依次全部复刻到新数组后面接上即可。
int* reOrderArray(int* array, int arrayLen, int* returnSize ) {
    int* even = malloc(sizeof(int) * arrayLen);
    int i = 0, j = 0,k = 0;
    for(i = 0,j = 0; i < arrayLen; i++){
        if(array[i] % 2 == 1)
            array[k++] = array[i];  //放奇数
        else
            even[j++] = array[i];  //放偶数
    }
    for(j = 0; k < arrayLen; k++)
          array[k] = even[j++];   //把偶数接过去
    *returnSize = arrayLen;
    return array;
}
时间复杂度度O(n),空间复杂度O(n).
如果要求空间复杂度为O(1),也可以直接在原数组操作,只不过时间复杂度更高一些。
方法2——遇到偶数不管,遇到奇数时,把从前一个奇数到这个奇数中间的数后移一位,然后把当前奇数插到前面奇数序列尾部。然后继续
int* reOrderArray(int* array, int arrayLen, int* returnSize ){
    int i = 0, j = 0, k = 0;
    for(j = 0; j < arrayLen; j++){
        if(array[j] % 2 == 0)
           continue;
        else{
            int tmp = array[j];
            for(k = j-1; k >= i; k--)
                array[k+1] = array[k];
            array[i++] = tmp;
        }
    }
    *returnSize = arrayLen;
    return array;
}