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

题目描述

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

/*
思路:类似冒泡算法,前偶后奇数就交换.
*/

class Solution {
public:
    void reOrderArray(vector &array) {
        bool flag = false;
        for(int i=0;ii;j--){
                if(array[j-1]%2==0 && array[j]%2==1){
                    flag = true;
                    int temp = array[j-1];
                    array[j-1] = array[j];
                    array[j] = temp;
                    }
              }
              //优化代码
              if(flag)//说明存在元素交换
                  flag = false;
              else//说明存在元素交换,此时数组已经排好序,之后的循环失去意义,直接返回
                  return;
         }
    }
};

 

你可能感兴趣的:(剑指offer,剑指offer,基础算法,数组排序)