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

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

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)

全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务