调整数组顺序使奇数位于偶数前面

img

img

img


这地方我想用双指针,哪里错了呢?具体思路写在注释上了(括号内充字数使用)

供参考:

void reOrderArray(int *array, int length)
{
     int i ,j ,tmp;
     for (i = 0;i < length - 1;i++){
        for (j = 0;j < length - i - 1;j++){
            //a[j]为偶数,a[j+1]为奇数,奇数在前,偶数在后
            if (array[j] % 2 == 0 && array[j+1] % 2 != 0 )
            {
                 tmp = array[j];
                 array[j]= array[j+1];
                 array[j+1]=tmp;
            }
        }
    }
}


void reOrderArray(int *array, int length) {
    int*l = array, *r = array + length - 1;
    while(l < r) {
        if((*l) % 2 == 0){
            int temp = *l;
            *l = *r;
            *r = temp;
            r--;
        }else{
            l++;
        }
    }
}