请问这个该怎么写啊?

编写函数 function2,用于将某一整型数组中n(0<n<100)个数按先奇数后偶数的方式从 小到大顺序存放

供参考:

#include<stdio.h>
#define  Max  100
void function2(int a[], int n)
{
    int i, j, tmp;
    for (i = 0; i < n - 1; i++)//冒泡排序
    {
        for (j = 0; j < n - 1 - i; j++)

        {
            if ((a[j] % 2 < a[j + 1] % 2) || //当前一个元素为偶数,后一个元素为奇数时     
                ((a[j] % 2 == a[j + 1] % 2) && (a[j] > a[j + 1])))
                      // 前后两个元素同为奇数或偶数,并且前一个元素比后一个元素大时
            {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;

            }
        }
    }
}
int main()
{
    int a[] = { 10 ,2, 7, 9, 11, 5 ,4 ,3 ,6 ,8 ,20 }, n = 0, i;
    n = sizeof(a) / sizeof(a[0]);
    function2(a, n);
    for (i = 0; i < n; i++)//遍历数组
        printf("%d ", a[i]);
    printf("\n");
    return 0;
}

如果数组有0就不好处理了
void function2(int arr[],len)
{
int arr2[len];
int j=0,k=0;
for(int i=0;i<len;i++)
{
if(arr[i]%2==0)
{
arr2[j]=arr[i];
++j;
}
else
{
arr[k]=arr[i];
++k;
}
}
j=0;
for(;k<len;k++)
{
arr[k]=arr2[j];
}
}

img