優先順序佇列,顧名思義,和傳統「先進後出」的佇列相比,優先順序佇列在元素加入時就根據該元素的優先順序插入到相應位置。實際上優先順序佇列priotyqueue在poll時還是遵循先進後出,只是資料在進入時已經根據優先順序排序了。實現優先順序佇列需要實現乙個comparator,測試**如下:
public class priotyqueuetest
};queuequeue = new priorityqueue(11,t);
//將給定陣列新增到優先順序佇列中
public void add(int nums)
//列印函式
public void print()
system.out.println();
}public static void main(string args) ;
priotyqueuetest q = new priotyqueuetest();
q.add(test);
q.print();
}}
//測試實體類
class man
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
}
讓我好奇的是,這裡的add( )函式中究竟發生了什麼?我們把這部分源**拿出來review一下:
private void siftupusingcomparator(int k, e x)
queue[k] = x;
}
從上面的**我們可以看到:
1、queue是基於物件陣列實現的,並抽象成樹結構;
2、這裡的比較器的含義是:直到優先順序小於待插元素時停止搜尋;
3、刪除的時間複雜度為o(1),插入的時間複雜度為o(n)
java手寫優先順序佇列
優先順序佇列是比棧和佇列更專用的資料結構。優先順序佇列與上面普通的佇列相比,主要區別在於佇列中的元素是有序的,關鍵字最小 或者最大 的資料項總在隊頭。資料項插入的時候會按照順序插入到合適的位置以確保佇列的順序。優先順序佇列的內部實現可以用陣列或者一種特別的樹 堆來實現。package com.cn....
佇列 優先順序佇列
優先順序佇列的隊尾是不需要改變的,永遠在低下標處。當佇列增加資料時,隊頭的位置就是資料項的大小減去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中最大關鍵字並返回該最大關鍵子...