/**
* 一个数组,一半奇数,一半是偶数,要将数组按照偶奇偶奇的顺序排序
* 思路,找出下标是偶数但值是奇数的,和下标是奇数但值是偶数的,两个互换,直到结束
*/
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;
}
}