一个很容易理解的解法,时间复杂度为o^2
我们可以借鉴冒泡排序的特点,让偶数不断向右边移动,而冒泡的过程本身也可以保证相对顺序的不变,最后所有的偶数都移动到了右边,最坏情况下外层循环需要进行array.size()次。

class Solution
{
public:
    void reOrderArray(vector<int> &array)
    {
        int loop = array.size();
        while (loop--)
        {
            bool change = false;
            for (int i = 0; i < array.size() - 1; i++)
            {
                if (array[i] % 2 == 0 && array[i + 1] % 2 == 1)
                {
                    swap(array, i, i + 1);
                    change = true;
                }
            }
            if (!change)
            {
                return;
            }
        }
    }

    void swap(vector<int> &array, int i, int j)
    {
        auto temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
};