二叉堆優先佇列
-
public class MaxPQ <Key extends Comparable<Key>> {
-
private Key[] pq;
-
private int N=0;
-
public MaxPQ(int maxN){
-
pq=(Key[])new Comparable[maxN+1];
-
}
-
-
public boolean isEmpty(){
-
return N==0;
-
}
-
-
public int size(){
-
return N;
-
}
-
-
public void insert(Key v){
-
pq[++N]=v;
-
swim(N);
-
}
-
-
private void swim(int k) {
-
while(k>1 && less(k/2,k)){
-
exch(k/2,k);
-
k=k/2;
-
}
-
}
-
-
private boolean less(int i, int j) {
-
return pq[i].compareTo(pq[j])<0;
-
}
-
-
public Key delMax(){
-
Key max=pq[1] ;
-
exch(1,N--);
-
pq[N+1]=null;
-
sink(1);
-
return max;
-
}
-
-
private void sink(int k) {
-
while(2*k<=N){
-
int j=2*k;
-
if(j<N && less(j,j+1))
-
j++;
-
if(!less(k,j))
-
break;
-
exch(k,j);
-
k=j;
-
}
-
}
-
-
private void exch(int i, int j) {
-
Key t=pq[i];
-
pq[i]=pq[j];
-
pq[j]=t;
-
}
-
-
public static void main(String[] args){
-
Integer[] data={100,20,21,28,22,26,80,33,3,2,9,8,7,10,77,66,99,96,91,94};
-
-
MaxPQ<Integer> pq=new MaxPQ<>(data.length);
-
for(int i=0;i<data.length;i++){
-
pq.insert(data[i]);
-
}
-
while(!pq.isEmpty()){
-
System.out.println(pq.delMax());
-
}
-
}
- }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2125325/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 手擼優先佇列——二叉堆佇列
- 二叉堆實現優先佇列佇列
- 堆與優先佇列佇列
- 『演算法與資料結構』優先佇列 二叉堆演算法資料結構佇列
- 【堆】【優先佇列】[NOIP2004]合併果子佇列
- 最詳細版圖解優先佇列(堆)圖解佇列
- 堆、堆排序和優先佇列的那些事排序佇列
- PHP優先佇列PHP佇列
- java使用PriorityQueue即優先佇列實現大根堆和小根堆Java佇列
- 8.13(優先佇列貪心維護+打表找規律+對頂堆優先佇列+DFS減枝+貪心dp)佇列
- STL 優先佇列 用法佇列
- 淺談優先佇列佇列
- 優先佇列和堆排序佇列排序
- 01揹包優先佇列優化佇列優化
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 資料結構-詳解優先佇列的二叉堆(最大堆)原理、實現和應用-C和Python資料結構佇列Python
- 優先佇列的比較器佇列
- 封裝優先順序佇列封裝佇列
- NO GAME NO LIFE(優先佇列/最小堆)GAM佇列
- 牛客網 複數集合(小根堆的優先佇列、北郵機試)佇列
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- leetcode621——優先佇列的思路LeetCode佇列
- STL優先佇列最小堆最大堆佇列
- 堆、棧以及佇列佇列
- 關於樹的資料結構(二分搜尋樹,堆和優先佇列)資料結構佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- .NET 6 優先佇列 PriorityQueue 實現分析佇列
- Java優先順序佇列DelayedWorkQueue原理分析Java佇列
- 演算法面試(三) 優先佇列演算法面試佇列
- Facebook的分散式優先順序佇列FOQS分散式佇列
- 【Dijkstra演算法】未優化版+優先佇列優化版演算法優化佇列
- 演算法-棧佇列堆演算法佇列
- (js佇列,堆疊) (FIFO,LIFO)JS佇列
- codeforces round 974(div.3)E(優先佇列實現dijstra演算法,devc++的優先佇列用greater報錯)佇列JS演算法devC++
- CodeForces - 960B:Minimize the error(優先佇列+貪心)Error佇列
- Sunscreen POJ - 3614(防曬油) 貪心-優先佇列佇列
- [USACO 2009 Feb Gold] Fair Shuttle (貪心+優先佇列)GoAI佇列
- Python實現堆疊與佇列Python佇列