剑指 Offer-JZ13-调整数组顺序使奇数位于偶数前面

题目描述

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

解题思路

我们可以定义一个空 vector,然后对原 vector 进行两次遍历:第一次遍历的时候对每个元素判断它是否为奇数,如果是奇数,就加入新的 vector;第二次遍历的时候对每个元素判断它是否为偶数,如果是偶数,则加入新的 vector。

技术

C++ 中 vector 的使用方法

C++ vector 容器浅析

实现

class Solution {
public:
    void reOrderArray(vector<int> &array) {
        vector<int> retArray;
        int sizeOfArray;
        sizeOfArray = array.size();
        for(int i = 0; i < sizeOfArray; i++){
            if(array[i] % 2 == 1){
                retArray.push_back(array[i]);
            }
        }
        for(int i = 0; i < sizeOfArray; i++){
            if(array[i] % 2 == 0){
                retArray.push_back(array[i]);
            }
        }
        array = retArray;
    }
};

运行结果

运行时间:3ms
占用内存:468k

你可能感兴趣的:(剑指offer,c++,数据结构,算法)