剑指offer:调整数组顺序使奇数位于偶数前面

一、题目描述

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

二、思路

  设置一个变量start标志为调整好的最后一个奇数的后一个位置,遍历数组,当遍历到奇数时将其置换到start,然后start++。

 

public class 调整数组顺序使奇数位于偶数前面 {
	//将奇数抽到前面
    public static void reOrderArray(int [] array) {
        int start = 0;//最后一个奇数的后一个位置
        for(int i=0;i<array.length;i++){
        	if(array[i]%2==1){
        		moveArray(array, start, i);
        	}
        }
    }
    
    //将y位置的元素移动到x,然后原本x~y-1的元素向后移动一位
    public static void moveArray(int[] array,int x,int y){
    	int temp = array[y];
    	for(int i=y;i>x;i--){
    		array[i] = array[i-1];
    	}
    	array[x] = temp;
    }
    
    public static void main(String[] args) {
		int[] nums = {1,2,3,4,5};
		//reOrderArray(nums);
		moveArray(nums, 1, 2);
		for(int temp:nums){
			System.out.print(temp+" ");
		}
	}
}

  

  

posted @ 2020-01-28 11:38  DXYE  阅读(132)  评论(0编辑  收藏  举报