<剑指offer> 第11题

题目:

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分

思路:

维护两个指针,一个指向第一个数,从前往后遍历,另一个指向最后一个数,从后往前遍历,遇到偶数和奇数分别停下,交换位置,然后继续下一次

(类似于快排的第一步)

public class Eleventh {
    public static int[] sortArray(int[] arr){
        if(arr.length < 2){
            return  arr;
        }
        int left = 0;
        int right = arr.length - 1;
        while(left < right){
            if(arr[left] % 2 == 1 && left < right){
                left ++;
            }
            if(arr[right] % 2 == 0 && left <right){
                right --;
            }
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
        }
        return arr;
    }

    public static void main(String[] args){
        int[] arr = {1,2,3,4,5,6};
        for(int i: sortArray(arr) ){
            System.out.println(i);
        }
    }
}

 

posted @ 2019-08-09 15:07  HarSong13  阅读(134)  评论(0编辑  收藏  举报