題目描述:
輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。
題目來源: 牛客網
思路:
主要利用插排的一個思路,
根據插排思路, 默認第一個數爲有序, 對應到本題就是無論奇偶.
從下標爲1遍歷數組, 若爲偶數什麼都不做, 若爲奇數則一次判斷前面數字的奇偶性, 遇到奇數停止插入
代碼示例:
class Solution {
public:
void reOrderArray(vector<int> &array) {
int len = array.size();
int i, j;
for (i = 1; i < len; ++i)
{
if (array[i] % 2 == 0)
continue;
int tmp = array[i];
for (j = i - 1; j >= 0; --j)
{
if (array[j] % 2 == 0)
array[j + 1] = array[j];
else
{
break;
}
}
array[j + 1] = tmp;
}
}
};