首页 > 编程语言 > 详细

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

时间:2020-02-13 19:43:55      阅读:47      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 解题思路:用快排的思想

技术分享图片

 

 (双指针扫描) O(n)O(n)
用两个指针分别从首尾开始,往中间扫描。扫描时保证第一个指针前面的数都是奇数,第二个指针后面的数都是偶数。

每次迭代时需要进行的操作:

第一个指针一直往后走,直到遇到第一个偶数为止;
第二个指针一直往前走,直到遇到第一个奇数为止;
交换两个指针指向的位置上的数,再进入下一层迭代,直到两个指针相遇为止;

/*
 * 2个指针,一个从前往后,遍历元素是不是奇数。不满足条件跳出while循环,输出当前
 *                        元素的下标i
 * 一个从后往前查元素是不是偶数。不满足条件跳出while循环,输出当前元素的下标j
 * 当两个while都不执行的时候,进行数组元素的交换。
 *
 * /
class Solution {
public:
    void reOrderArray(vector<int> &array) {
         int i = 0,j=array.size()-1;
         while(i <= j && array[i] % 2 == 1)  //
         {
              i++;
         }
         while(i <= j && array[j] % 2 == 0)
         {
             j++;
         }
         if(i < j) swap(array[i],array[j]);
    }
};

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

原文:https://www.cnblogs.com/make-big-money/p/12304721.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!