将数组中的奇数放在偶数前面,但是不改变奇数、偶数原来的排布(牛客网)

类比排序算法,左边为已经处理好的,右边是待处理的,
用count来表示前一部分的奇数个数,
如果count==k(当前下标)说明前面有一个偶数还需要调整
#include<vector>
#include<iostream>
using namespace std;
void reOrderArray(vector<int> &array){
    int count = 0;
    for (int i = 0; i < array.size(); ++i){
        if (array[i] % 2 == 1){
            count++;
            if (i == 0){
                continue;
            }
            int tmp = array[i];
            int k = i;
            while (k >= count){
                array[k] = array[k - 1];
                k--;
            }
            array[count - 1] = tmp;
        }
    }
}
int main(){
    vector<int> v1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    reOrderArray(v1);
    for (int i = 0; i < v1.size(); i++){
        cout << v1[i]<<" ";
    }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/cx2479750196/article/details/80521988
今日推荐