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

题目描述

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

https://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?tpId=13&tqId=11166&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

类似插入排序,一直想O(n)时间O(1)空间发现不能保证有序。

class Solution {
public:
    void reOrderArray(vector &array) {
        int n = array.size();
        int k = 0;
        for (int i = 0; i < n; i++) {
            if (array[i] % 2 != 0) {
                int tmp = array[i];
                for (int j = i; j > k; j--) {
                    array[j] = array[j - 1];
                }
                array[k] = tmp;
                k++;
            }
        }
    }
};

 

你可能感兴趣的:(剑指offer)