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

剑指offer上的题目。题目内容如下:

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

简单的,考虑控制2个指针,p1,p2. 

p1指向首数组,p2指向尾数组。

接着p1,向前移动,当遇到偶数时,停止,

p2向后移动,当遇到奇数时,停止

交换2个数字。

题目详细解释,可以参照剑指offer上的解析。

代码如下:

package com.test.algorithm;

import java.util.Scanner;

public class Numbers {
    
    
    public static void reOrderArray(int [] array) {
        
        int p1,p2,len;
        len = array.length;
        p1 = 0 ;
        p2 = len - 1;
        while(p1<p2){
            while(array[p1]%2!=0&&p1<p2)
                p1++;
            while(array[p2]%2==0&&p1<p2)
                p2--;
            
            if(p1<p2){
                int temp;
                temp = array[p1];
                array[p1] = array[p2];
                array[p2] = temp;
            }
        }
     }

    
    public static void main(String[] args) {
        
        //Scanner scanner = new Scanner(System.in);
        int[] arrays = new int[]{1,2,3,4,5,6,7};
        reOrderArray(arrays);
        for(int i = 0 ; i < arrays.length; i++){
            System.out.println(arrays[i]);
        }
    }
}

 

posted @ 2017-08-01 20:14  Cloud_strife  阅读(152)  评论(0编辑  收藏  举报