package 剑指Offer;
import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
public class 偶数和奇数分段从小到达排序 {
//给定数组,其中包括奇数和偶数,按偶数在面前,奇数在后面,其中偶数和奇数部分分别按从小到大的顺序排列
//思路:使用PriorityQueue实现,自定义比较器
public static void main(String[] args) {
int [] nums={2,1,4,3,6,5,8,7,9,10};
helper(nums);
System.out.println(Arrays.toString(nums));
}
public static void helper(int [] nums){
//使用PriorityQueue实现
PriorityQueue <Integer> pq = new PriorityQueue <Integer>(10, new Comparator <Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int resulte=o1%2-o2%2;
if(resulte==0){
//说明同为一类型的数,直接返回从小到大
return o1-o2;
}
//为不同类型的,按从小大排序
return resulte;
}
});
for(int num:nums){
pq.offer(num);
}
int count=0;
while(!pq.isEmpty()){
//重新赋值
nums[count++]=pq.poll();
}
}
}
剑指Offer—偶数和奇数按顺序放置
最新推荐文章于 2020-06-02 14:59:53 发布