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

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

http://www.nowcoder.com/questionTerminal/beb5aa231adc45b2a5dcc5b62c93f593

class Solution {
public:
    void reOrderArray(vector<int>& array) {
        int len = array.size();
        bool change = false;
        for (int i = 0; i < len-1; i++)
        {
            for (int j = 0; j < len - 1 - i; j++)
            {
                if ((array[j] & 0x1) == 0 && (array[j + 1] & 0x1) == 1)
                {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                    change = true;
                }
            }
            if (!change)
                return;
            else
                change = false;
        }
    }
};

1.若不要求奇数偶数相对顺序不变,用两个指针分别指向两头,向中间移动并交换不正确的位置关系。
时间复杂度O(n),空间复杂度O(1)
2.若要求相对顺序不变,但可使用辅助空间,可创建两个辅助数组分别存储奇数和偶数,再拼接在一起。
时间复杂度O(n),空间复杂度O(n)
3.若要求相对顺序不变,且不能使用辅助空间,只能采取冒泡排序的思路,每次至少放一个偶数在最后面。
时间复杂度O(n^2),空间复杂度O(1)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务