您好,登錄后才能下訂單哦!
這篇文章主要講解了“JavaScript如何實現優先級隊列”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JavaScript如何實現優先級隊列”吧!
我們知道,普通的隊列插入一個元素,數據會被放在后端,并且需要前面所有的元素都處理完成后才會處理前面的數據。但是優先級隊列,在插入一個元素的時候會考慮該數據的優先級,和其他數據的優先級進行比較。比較完成后,可以得出這個元素在隊列中的正確位置,其他的處理方式,和基本隊列的處理方式基本一樣。
優先級隊列主要考慮的問題:
每個元素不再只是一個數據,而且包含數據的優先級;
在添加方式中,根據優先級放入正確的位置。
在日常中也有用到優先級隊列的例子,比如說醫院的(急診科)候診室。醫生會優先處理病情比較嚴重的患者。計算機中,我們也可以通過優先級隊列來重新排列隊列中任務的順序.比如每個線程處理的任務重要性不同,我們可以通過優先級的大小,來決定該線程在隊列中被處理的次序。
優先級隊列的操作和隊列的操作方法基本相同,但是插入操作有所不同,所以,我們這里主要是來實現優先級隊列的插入操作。
比如說我們現在要根據某個數據的優先級來插入元素,這里我們先創建一個類來封裝優先級隊列,并在其內部創建一個構造函數來保存元素的優先級和數據,再添加一個屬性用于存放元素。
代碼如下:
function PtiorityQueue(){ var items = []; //封裝一個新的構造函數,用于保存元素和元素的優先級 function queueElement(element,priority){ this.element = element; this.priority = priority; } }
創建完成后,在來實現其的插入操作:
如果隊列內部沒有元素,則直接插入
如果要插入的元素的優先級小于隊列內部元素的優先級,則排序后插入。
具體實現代碼如下:
function PtiorityQueue(){ this.items = []; //封裝一個新的構造函數,用于保存元素和元素的優先級 function QueueElement(element,priority){ this.element = element; this.priority = priority; } //1.實現插入方法 PtiorityQueue.prototype.enqueue = function(element,priority){ //1.創建queueElement對象 var queueElement = new QueueElement(element,priority); //2.判斷隊列是否為空 if(this.items.length == 0){ this.items.push(queueElement); }else{ var flag = false; for(var i =0;i<this.items.length;i++){ if(queueElement.priority < this.items[i].priority){ this.items.splice(i,0,queueElement); flag = true; break; } } if(!flag){ this.items.push(queueElement) } } } }
輸入測試數據為:
var pq = new PtiorityQueue();
pq.enqueue('d',30)
pq.enqueue('c',50)
pq.enqueue('a',100)
pq.enqueue('b',60)
pq.enqueue('e',20)
console.log(pq);
打印結果為:
感謝各位的閱讀,以上就是“JavaScript如何實現優先級隊列”的內容了,經過本文的學習后,相信大家對JavaScript如何實現優先級隊列這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。