/**
 *  一个数组,一半奇数,一半是偶数,要将数组按照偶奇偶奇的顺序排序
 *  思路,找出下标是偶数但值是奇数的,和下标是奇数但值是偶数的,两个互换,直到结束
 */
public class SortArrayByParityll {


    public static void main(String[] args) {

        int [] arr = new int[] {12,14,16,18,16,10,20,19,11,25,27,29,23,17};
        sort(arr);
        Arrays.stream(arr).forEach(s -> System.out.print(s+ " "));

    }

    private static void sort(int[] arr) {
        int i = 0 ;
        int j = 1;
        for(;i<arr.length && j<arr.length; ) {
            if(arr[i] % 2 == 0) {
                i+=2;
            }else if(arr[j] % 2 == 1) {
                j+=2;
            }else {
                swap(i, j, arr);
            }
        }
    }



    public static  void swap(int a , int b , int [] arr) {
        int temp = arr[a];
        arr[a] = arr[b];
        arr[b] = temp;
    }

}
12-31 02:05