學(xué)習(xí)Javascript數(shù)據(jù)結(jié)構(gòu)與算法 — 優(yōu)先隊列

上一篇文章我們講了隊列

隊列:http://www.reibang.com/p/9a35962d5ad5

這一章我們看一看優(yōu)先隊列窃蹋。優(yōu)先隊列即在隊列的基礎(chǔ)上多了一個優(yōu)先級,我們選擇一個對象用來存儲隊列的每一個元素静稻,使用一個屬性來存儲元素的優(yōu)先級警没。存儲整個優(yōu)先隊列我們還是使用數(shù)組。
實現(xiàn):

<code>
function priorityQueue(){
var items = [];
function priorityQueueElement(element,priority){
this.element = element;
this.priority = priority;
}
this.enqueue = function(element,priority){
var Node = new priorityQueueElement(element,priority);
if(items.length == 0){
items.push(Node)
}else{
var added = false;
for(var i=0;i<items.length;i++){
if(Node.priority < items[i].priority){
items.splice(i,0,Node);
added = true;
break;
}
}
if(!added){
items.push(Node);
}
}
}
this.print =function(){
console.log(items);
}
}
var pQ = new priorityQueue();
pQ.enqueue("a",1);
pQ.enqueue("b",2);
pQ.enqueue("c",3);
pQ.enqueue("d",1);
pQ.print();

</code>

在上述代碼中打印結(jié)果應(yīng)該是:

[ priorityQueueElement { element: 'a', priority: 1 },
priorityQueueElement { element: 'd', priority: 1 },
priorityQueueElement { element: 'b', priority: 2 },
priorityQueueElement { element: 'c', priority: 3 } ]

這樣的一個數(shù)組振湾,其中每一個元素都是一個 priorityQueueElement 對象杀迹。

叩叩叩(手動敲黑板),劃重點:

  1. 使用數(shù)組存取元素押搪,
  2. 使用 priorityQueueElement 輔助類來創(chuàng)建一個帶有優(yōu)先級的元素树酪。
  3. 每次入隊時需要提供元素本身的值(this.element),以及元素本身的優(yōu)先級(this.priority);通過這兩個屬性,我們可以創(chuàng)建一個帶有優(yōu)先級的元素大州。
  4. 如果保存隊列的數(shù)組是空數(shù)組续语,我們直接 push 進去。
  5. 如果數(shù)組不為空摧茴,我們先聲明一個變量用來存儲是否入隊的狀態(tài)绵载,開始遍歷數(shù)組,如果遇到一個元素的優(yōu)先級大于需要入隊的元素苛白,那么我們把當(dāng)前元素插入這個元素之前娃豹,使用 splice 方法。
  6. 如果遍歷玩一遍都沒有發(fā)現(xiàn)有元素大于新元素购裙,那么我們把新元素push到結(jié)尾懂版。

進度有點慢,明天更新躏率,循環(huán)隊列躯畴∶窆模~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蓬抄,隨后出現(xiàn)的幾起案子丰嘉,更是在濱河造成了極大的恐慌,老刑警劉巖嚷缭,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饮亏,死亡現(xiàn)場離奇詭異,居然都是意外死亡阅爽,警方通過查閱死者的電腦和手機路幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來付翁,“玉大人简肴,你說我怎么就攤上這事“俨啵” “怎么了砰识?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長移层。 經(jīng)常有香客問我仍翰,道長,這世上最難降的妖魔是什么观话? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮越平,結(jié)果婚禮上频蛔,老公的妹妹穿的比我還像新娘。我一直安慰自己秦叛,他們只是感情好晦溪,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挣跋,像睡著了一般三圆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上避咆,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天舟肉,我揣著相機與錄音,去河邊找鬼查库。 笑死路媚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的樊销。 我是一名探鬼主播整慎,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼脏款,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了裤园?” 一聲冷哼從身側(cè)響起撤师,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拧揽,沒想到半個月后丈氓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡强法,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年万俗,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饮怯。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡闰歪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蓖墅,到底是詐尸還是另有隱情库倘,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布论矾,位于F島的核電站教翩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贪壳。R本人自食惡果不足惜饱亿,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闰靴。 院中可真熱鬧彪笼,春花似錦、人聲如沸蚂且。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杏死。三九已至泵肄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淑翼,已是汗流浹背腐巢。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窒舟,地道東北人系忙。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像惠豺,于是被迫代替她去往敵國和親银还。 傳聞我的和親對象是個殘疾皇子风宁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容