優先順序佇列(priorityqueue)是個很有用的資料結構,很多程式語言都有實現。nodejs是乙個比較新潮的伺服器語言,貌似還沒有提供相關類。這些天有用到優先順序佇列,因為時間很充足,閒來無事,就自己實現了一下。**如下:
/*** script: pqueue.js
* description: 優先順序佇列類
* authors: [email protected]
* date: 2016-04-19
*/var util = require('util');
/** * 優先順序佇列類
* @param cmp_func 優先順序比較函式,必需,參考陣列排序引數
*/var pqueue = exports.pqueue = function(cmp_func) ;
//堆向上調整
pqueue.prototype._heapupadjust = function(index) else
}records[index] = record;
};//堆向下調整
pqueue.prototype._heapdownadjust = function(index)
var child_record = records[child_index];
if (cmp_func(record, child_record) > 0) else
}records[index] = record;
};//銷毀
pqueue.prototype.destroy = function() ;
//將記錄插入佇列
pqueue.prototype.enqueue = function(record) ;
//刪除並返回隊頭記錄
pqueue.prototype.dequeue = function() else
return record;
};//獲取隊頭記錄
pqueue.prototype.gethead = function() ;
//獲取佇列長度
pqueue.prototype.getlength = function() ;
//判斷佇列是否為空
pqueue.prototype.isempty = function() ;
//清空佇列
pqueue.prototype.clear = function() ;
我覺得,相對於其他排序演算法而言,用堆實現優先順序佇列,入隊時間波動較小,比較平穩。
用堆實現優先順序佇列
申明 要用到堆的基本操作 鏈結為 typedef struct priorityqueue priorityqueue 優先順序佇列初始化 void priorityqueueinit priorityqueue q,compare com 向佇列中插入元素 void priorityqueuepu...
優先順序佇列的實現
優先順序佇列 佇列裡面的所有元素都有相應的權值,元素的刪除順序由這些權值決定。優先順序佇列的實現一般用堆來實現其效率比一般的實現要高。要弄清楚堆我們得先弄清楚下面的定義 一顆大根樹 小根樹 是這樣一棵樹,其中每個節點的值都大於 小於 或等於其子節點 如果有子節點的話 的值。大根堆 乙個大根堆 小根堆...
優先順序佇列(堆實現)
一 優先順序佇列定義 二 方法實現 獲得最大元素方法 去掉最大元素方法 修改優先順序方法 新增節點 三 實現 用堆實現乙個優先順序佇列 主要是新增 修改 刪除節點 節點具有唯一性 author hhf 2014年11月28日 public class priorityqueue 返回優先佇列中優先順...