在很多應用中,我們通常需要按照優先順序情況對待處理物件進行處理,比如首先處理優先順序最高的物件,然後處理次高的物件。最簡單的乙個例子就是,在手機上玩遊戲的時候,如果有來電,那麼系統應該優先處理打進來的**。在這種情況下,我們的資料結構應該提供兩個最基本的操作,乙個是返回最高優先順序物件,乙個是新增新的物件。這種資料結構就是優先順序佇列(priority queue)
public class priorityqueue
}//向上調整,已知子節點座標,index代表當前節點,parent代表父節點,比較大小,大的在堆頂
private static void shiftup(int array,int index)
int flag=array[parent];
array[parent]=array[index];
array[index]=flag;
index=parent;}}
//當超過了當前容量,進行擴容
private void grow(int mincapacity)
int oldcapacity=array.length;
int newcapacity=oldcapacity+oldcapacity/2;
array=arrays.copyof(array,newcapacity);
}//從堆尾開始新增元素,然後向上調整
public boolean offer(int e)
if(i==0)else
return true;
}//從堆頂取出元素,堆頂元素,暫時用堆尾元素替代
public int poll()
public int peek()
public string tostring()
public static void main(string args)
system.out.println(queue);
}}
來試試效果
[11, 9, 10, 6, 8, 5, 4, 0, 3, 2, 7, 1]
process finished with exit code 0
優先順序佇列(堆實現)
一 優先順序佇列定義 二 方法實現 獲得最大元素方法 去掉最大元素方法 修改優先順序方法 新增節點 三 實現 用堆實現乙個優先順序佇列 主要是新增 修改 刪除節點 節點具有唯一性 author hhf 2014年11月28日 public class priorityqueue 返回優先佇列中優先順...
優先順序佇列(堆實現)
優先順序佇列 概念 一般來說我們會根據事情的重要程度優先處理某事,比如完成學習任務和刷微博,我們會認為完成學習任務比較重要,因此會先執行它,因此在這種情況下,資料結構就應提供兩個基本的操作,一是返回最高優先順序物件,二是新增新的物件,這種資料結構就叫做優先順序佇列。二叉樹的順序儲存 儲存方式 使用陣...
堆實現的優先順序佇列
堆實現的優先順序佇列的主要方法說明 1 heap maximum int a 返回中具有最大關鍵字的元素 2 heap extract max int a 去掉並返回具有最大關鍵字的元素 3 heap increase key int a,int i,int k 將第i個元素的關鍵字值增加到k,k不...