一个很容易理解的解法,时间复杂度为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;
}
}; 
京公网安备 11010502036488号