1,PriorityQueue默認實現的是最小堆
import java.util.PriorityQueue;
/**
* @author Manduner_TJU
* @version 創建時間:2019年4月10日下午4:51:00
*/
public class Test9 {
public static void main(String[] args) {
int[] a = {45,36,18,53,72,30,48,93,15,35};
//1,默認實現的是最小堆,元素按照natural ordering排序(自然排序,例如,數字的從小到大)
PriorityQueue<Integer> minHeap = new PriorityQueue<Integer>();
for(int i=0;i<a.length;i++) {
minHeap.offer(a[i]);
}
while(!minHeap.isEmpty()) {
System.out.print(minHeap.poll()+" ");
}
System.out.println();
//輸出(升序):15 18 30 35 36 45 48 53 72 93
}
}
2,通過比較器實現最大堆
import java.util.Comparator;
import java.util.PriorityQueue;
/**
* @author Manduner_TJU
* @version 創建時間:2019年4月10日下午4:51:00
*/
public class Test9 {
public static void main(String[] args) {
int[] a = {45,36,18,53,72,30,48,93,15,35};
//2,通過比較器排序,實現最大堆
PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
/**以下是對比較器升序、降序的理解.
*(1) 寫成return o1.compareTo(o2) 或者 return o1-o2表示升序
*(2) 寫成return o2.compareTo(o1) 或者return o2-o1表示降序
*/
return o2.compareTo(o1);
}
}) ;
for(int i=0;i<a.length;i++) {
maxHeap.offer(a[i]);
}
while(!maxHeap.isEmpty()) {
System.out.print(maxHeap.poll()+" ");
}
System.out.println();
//輸出(降序):93 72 53 48 45 36 35 30 18 15
}
}