import java.util.Arrays;
import java.util.Comparator;
public class test {
public static void main(String[] args) {
Integer[] arr = {5, 8, 1, 6, 3, 2, 10};
System.out.println(Arrays.toString(arr));
int left = 0;
int right = arr.length - 1;
//循环左右奇偶调换,直到right小于left时全部调换完成
while (left < right) {
//判断左边都是奇数,到偶数时停止
while (arr[left] % 2 != 0) {
left++;
}
//判断右边边都是偶数,到奇数时停止
while (arr[right] % 2 == 0) {
right--;
}
//奇偶调换
if (left < right) {
//将数组左边的偶数与右边的奇数互换
int tmp = arr[left];
arr[left] = arr[right];
arr[right] = tmp;
}
}
//左右奇偶调换后输出
System.out.println(Arrays.toString(arr));
//升序奇数区域0到left(不包括left)
Arrays.sort(arr, 0, left);
//降序偶数区域left到数组的长度(不包括数组的长度)
Arrays.sort(arr, left, arr.length, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
System.out.println(Arrays.toString(arr));
}
}
结果显示