優先順序佇列

2021-09-11 01:32:16 字數 1164 閱讀 9043

優先順序佇列定義

如果我們給每個元素都分配乙個數字來標記其優先順序,不妨設較小的數字具有較高的優先順序,這樣我們就可以在乙個集合中訪問優先順序最高的元素並對其進行查詢和刪除操作了。這樣,我們就引入了優先順序佇列 這種資料結構。 優先順序佇列(priority queue) 是0個或多個元素的集合,每個元素都有乙個優先權,對優先順序佇列執行的操作有(1)查詢(2)插入乙個新元素 (3)刪除 一般情況下,查詢操作用來搜尋優先權最大的元素,刪除操作用來刪除該元素 。對於優先權相同的元素,可按先進先出次序處理或按任意優先權進行。

優先權:

優先佇列是0個或多個元素的集合,每個元素都有乙個優先權或值,對優先佇列執行的操作有:

查詢;插入乙個新元素;

刪除.

在最小優先佇列(min priorityq u e u e)中,查詢操作用來搜尋優先權最小的元素,刪除操作用來刪除該元素;對於最大優先佇列(max priority queue),查詢操作用來搜尋優先權最大的元素,刪除操作用來刪除該元素.優先權佇列中的元素可以有相同的優先權,查詢與刪除操作可根據任意優先權進行.

**實現:

首先建立乙個優先順序佇列類priorityqueue

public class priorityqueue 

//插入資料(插入方式為最大優先插入)

public void insert(long value)

}for (int j=elems;j>i;j--)

arr[i]=value;

elems++;

}//移除資料

public long remove()

//是否為空

public boolean isempty()

//是否為滿

public boolean isfull()

//返回元素大小

public int size()

}

建立測試類(testpq)進行測試:

public class testpq }}

結果展示:

輸出結果從小到大依次輸出

佇列 優先順序佇列

優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去1.public class priorityq 插入 public void insert long item else quearray j 1 item nitem 刪除 public long ...

優先順序佇列

分為最小優先順序佇列和最大優先順序佇列。優先順序佇列是一種用來維護一組元素構成的集合s的資料結構,這一組元素都有乙個關鍵字key,乙個最大優先順序佇列支援的操作 insert s,x 把x插入到集合s中 maxmum s 返回s中最大元素 extra max s 去掉s中最大關鍵字並返回該最大關鍵子...

優先順序佇列

1 include stdafx.h 2 include3 4 using namespace std 5 6 define max heap len 107 int heap max heap len 8 int heap size 0 the number of elements in heap...