Leetcode 剑指 Offer 21 调整数组顺序使奇数位于偶数前面

这道题主要考察的是排序算法。
具体解题思想参考剑指offer 21.

时间和内存消耗以及源代码如下:
Leetcode 剑指 Offer 21 调整数组顺序使奇数位于偶数前面_第1张图片

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
bool    isEven(int Point)
{
    if  ((Point & 1) ==  1)
    {
        return  true;
    }

    return  false;
}

int* exchange(int* nums, int numsSize, int* returnSize){
    
    if  (nums   ==  NULL)
    {
        return  0;
    }
    
    int*    firstPoint  =   nums;
    int*    lastPoint   =   nums    +   numsSize    -   1;

    *returnSize =   numsSize;

    while   (firstPoint < lastPoint)
    {
        while   (isEven(*firstPoint))
        {
            firstPoint++;
            if  (firstPoint >= nums    +   numsSize)
            {
                break;
            }
        }
        while(!isEven(*lastPoint))
        {
            lastPoint--;
            
            if  (lastPoint < nums)
            {
                break;
            }
        }

        if(firstPoint < lastPoint)
        {
            int temp;
            temp        =   *firstPoint;
            *firstPoint =   *lastPoint;
            *lastPoint  =   temp;
        }
    }

    return  nums;
}

你可能感兴趣的:(leetcode,c语言,算法)