码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-11-02 16:26:43      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   for   sp   div   on   log   

  • 题目

  输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)

  • 思路

  采用两个指针low、high,分别指向数组的头部跟尾部。low指针向后滑动,high指针向前滑动,low指针用来找偶数,high指针用来找基数,然后将两者交换,这类似于快速排序

  • 代码实现

 

public class Algorithm {
    
    /**判断数字num是否为奇数*/
    public static boolean isEven(int num){
        /**位运算要比%要快*/
        if((num & 1) == 1)
            return true;
        return false;
    }
    
    public static void ReorderOddEven(int [] source) {
        int low = 0;
        int high = source.length - 1;
        while(low <= high) {
            /**找偶数*/
            while(isEven(source[low])) {
                ++low;
            }
            /**找奇数*/
            while(!isEven(source[high])) {
                --high;
            }
            if(low <= high) {
                /**交换*/
                int tmp = source[low];
                source[low] = source[high];
                source[high] = tmp;
            }
        }
    }
    
    public static void main(String []args) {
        int [] array = new int[]{2,4,5,6,3,8,1};
        Algorithm.ReorderOddEven(array);
        for(int num : array) {
            System.out.println(num);
        }
    }
}

 

 

 

  

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

标签:style   blog   color   ar   for   sp   div   on   log   

原文地址:http://www.cnblogs.com/hanfight/p/4069383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!