您的位置:首页 > Web前端

【剑指offer-解题系列(13)】奇数位于数组的前列

2017-05-21 18:48 246 查看


题目描述

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

1、新建两个数组分别放原数组中的奇数和偶数。

2、将奇数数组中的数复制给原数组

3、将偶数数组中的数复制到原数组奇数的后边

复杂度O(n),空间复杂度O(n)

第二种:

用冒泡方法,把奇数冒泡到前方,复杂度O(n^2),空间复杂度O(n)

代码实现
    void reOrderArray(vector<int> &array) {
        int n = array.size();

        int ind_last_odd = 0;

        for(int i = 0;i<n;i++){

            if(array[i]&0x01){

                  for(int j = i;j>ind_last_odd;j--){

                      swap(array[j],array[j-1]);

                  }

                ind_last_odd ++;

            }

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: