[發(fā)明專利]一種優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法及優(yōu)先級(jí)隊(duì)列設(shè)計(jì)裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201510427912.1 | 申請(qǐng)日: | 2015-07-20 |
| 公開(kāi)(公告)號(hào): | CN104965686B | 公開(kāi)(公告)日: | 2019-01-22 |
| 發(fā)明(設(shè)計(jì))人: | 潘洪安 | 申請(qǐng)(專利權(quán))人: | 北京金山安全軟件有限公司 |
| 主分類號(hào): | G06F7/76 | 分類號(hào): | G06F7/76 |
| 代理公司: | 北京市廣友專利事務(wù)所有限責(zé)任公司 11237 | 代理人: | 祁獻(xiàn)民 |
| 地址: | 100085 北*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 優(yōu)先級(jí) 隊(duì)列 設(shè)計(jì) 方法 裝置 | ||
本發(fā)明的實(shí)施例公開(kāi)一種優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法及優(yōu)先級(jí)隊(duì)列設(shè)計(jì)裝置。優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法包括:獲取待置于優(yōu)先級(jí)隊(duì)列中的各元素的優(yōu)先級(jí)級(jí)別序列;以得到的優(yōu)先級(jí)級(jí)別序列構(gòu)建優(yōu)先級(jí)隊(duì)列,優(yōu)先級(jí)級(jí)別序列中的每一級(jí)優(yōu)先級(jí)級(jí)別對(duì)應(yīng)構(gòu)建的所述優(yōu)先級(jí)隊(duì)列中的一列元素;為構(gòu)建的所述優(yōu)先級(jí)隊(duì)列中的列元素設(shè)置相應(yīng)的優(yōu)先級(jí)級(jí)別索引,并使設(shè)置的所述優(yōu)先級(jí)級(jí)別索引映射優(yōu)先級(jí)級(jí)別鏈表;從所述待置于優(yōu)先級(jí)隊(duì)列中的各元素中,選取相同優(yōu)先級(jí)級(jí)別的元素,按照先進(jìn)先出的方式,置于該優(yōu)先級(jí)別對(duì)應(yīng)的優(yōu)先級(jí)級(jí)別鏈表中,以使所述優(yōu)先級(jí)級(jí)別鏈表存儲(chǔ)具有該優(yōu)先級(jí)級(jí)別的所有元素。應(yīng)用本發(fā)明,可以降低基于生成的優(yōu)先級(jí)隊(duì)列進(jìn)行更新的時(shí)間復(fù)雜度。
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù),尤其涉及一種優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法及優(yōu)先級(jí)隊(duì)列設(shè)計(jì)裝置。
背景技術(shù)
在計(jì)算機(jī)應(yīng)用領(lǐng)域中,隊(duì)列是一種被經(jīng)常應(yīng)用的支持先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),例如,被廣泛應(yīng)用于數(shù)據(jù)存儲(chǔ),優(yōu)先級(jí)隊(duì)列是在支持優(yōu)先級(jí)級(jí)別的情況下,保持先進(jìn)先出操作模式的隊(duì)列,即對(duì)于需要處理的元素,按照優(yōu)先級(jí)級(jí)別對(duì)各元素進(jìn)行排序,對(duì)于優(yōu)先級(jí)級(jí)別相同的元素,按照先進(jìn)先出的方式進(jìn)行排序,從而得到優(yōu)先級(jí)隊(duì)列。優(yōu)先級(jí)隊(duì)列一般適用于要求有序的應(yīng)用場(chǎng)景中,實(shí)際應(yīng)用中,在生成優(yōu)先級(jí)隊(duì)列后,由于元素的動(dòng)態(tài)更新,因而,需要在優(yōu)先級(jí)隊(duì)列中不斷執(zhí)行插入元素、刪除元素等優(yōu)先級(jí)隊(duì)列更新處理,為了保證優(yōu)先級(jí)隊(duì)列的有序,在優(yōu)先級(jí)隊(duì)列中插入新元素和刪除隊(duì)頭元素時(shí),需要結(jié)合待處理元素優(yōu)先級(jí)級(jí)別以及先進(jìn)先出重新調(diào)整優(yōu)先級(jí)隊(duì)列中已有元素的位置。
在對(duì)優(yōu)先級(jí)隊(duì)列進(jìn)行更新的過(guò)程中,由于優(yōu)先級(jí)隊(duì)列中一個(gè)元素的變動(dòng)可能導(dǎo)致需要對(duì)較多的元素進(jìn)行優(yōu)先級(jí)級(jí)別重排序處理,不僅需要消耗較多的計(jì)算資源,也使得基于生成的優(yōu)先級(jí)隊(duì)列進(jìn)行更新所耗費(fèi)的時(shí)間較長(zhǎng),此外,在對(duì)優(yōu)先級(jí)隊(duì)列整的元素進(jìn)行查詢時(shí),其查詢時(shí)間也與優(yōu)先級(jí)隊(duì)列的排序策略相關(guān)。因此,如何更有效地生成優(yōu)先級(jí)隊(duì)列,減少查詢以及更新優(yōu)先級(jí)隊(duì)列中元素所需的時(shí)間,花費(fèi)較小的代價(jià),使得生成的優(yōu)先級(jí)隊(duì)列能快速高效地支持插入元素和刪除元素等更新處理,提升用戶的業(yè)務(wù)體驗(yàn),是研究?jī)?yōu)先級(jí)隊(duì)列的一個(gè)熱點(diǎn)問(wèn)題。
目前,對(duì)于C++標(biāo)準(zhǔn)模板庫(kù)(STL,Standard Template Library)和Java中的優(yōu)先級(jí)隊(duì)列生成和更新,是基于堆來(lái)實(shí)現(xiàn)的。其中,堆是一種樹形數(shù)據(jù)結(jié)構(gòu),是優(yōu)先級(jí)隊(duì)列中的一種,每個(gè)結(jié)點(diǎn)都有一個(gè)值,堆的特點(diǎn)是根結(jié)點(diǎn)的值最小(或最大),且根結(jié)點(diǎn)的兩個(gè)子樹也是一個(gè)堆。由于堆在添加元素與刪除元素時(shí)都會(huì)破壞堆結(jié)構(gòu),并只允許在優(yōu)先級(jí)隊(duì)列的前端(隊(duì)頭)進(jìn)行刪除操作,而在優(yōu)先級(jí)隊(duì)列的后端(隊(duì)尾)進(jìn)行插入操作。因而,添加元素與刪除元素都需要進(jìn)行堆結(jié)構(gòu)調(diào)整,在堆結(jié)構(gòu)調(diào)整中,需要按照優(yōu)先級(jí)級(jí)別算法以及先進(jìn)先出原則,將添加的元素插入優(yōu)先級(jí)隊(duì)列中該添加元素優(yōu)先級(jí)對(duì)應(yīng)的位置,在刪除元素時(shí),從第一個(gè)(即最小元素,優(yōu)先級(jí)最高)元素開(kāi)始,即取隊(duì)頭元素執(zhí)行刪除操作。這樣,通過(guò)堆實(shí)現(xiàn)C++STL和Java中的優(yōu)先級(jí)隊(duì)列生成和更新,可以保證優(yōu)先級(jí)隊(duì)列中優(yōu)先級(jí)高的先服務(wù),而非先入先服務(wù)。但該基于優(yōu)先級(jí)級(jí)別算法以及先進(jìn)先出原則生成的優(yōu)先級(jí)隊(duì)列在進(jìn)行更新時(shí),插入元素和刪除隊(duì)頭元素的時(shí)間復(fù)雜度都是O(logn),其中,n為優(yōu)先級(jí)隊(duì)列中元素的個(gè)數(shù)。
為了有效降低生成的優(yōu)先級(jí)隊(duì)列在進(jìn)行更新時(shí)所需的時(shí)間,現(xiàn)有技術(shù)中提出了基于鏈表生成優(yōu)先級(jí)隊(duì)列,將各元素按照優(yōu)先級(jí)級(jí)別遞減順序排列。這樣,可以使得在生成的優(yōu)先級(jí)隊(duì)列中插入元素的時(shí)間復(fù)雜度為O(lgn),而將刪除元素的時(shí)間復(fù)雜度降低為O(l)。但該方法,優(yōu)先級(jí)隊(duì)列整體更新所需的時(shí)間(時(shí)間復(fù)雜度)還是較長(zhǎng),降低了基于生成的優(yōu)先級(jí)隊(duì)列進(jìn)行更新時(shí)的效率,不能滿足用戶即時(shí)、快速的業(yè)務(wù)處理需求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例提供一種優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法及優(yōu)先級(jí)隊(duì)列設(shè)計(jì)裝置,降低基于生成的優(yōu)先級(jí)隊(duì)列進(jìn)行更新的時(shí)間復(fù)雜度。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
一方面,本發(fā)明實(shí)施例提供一種優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法,包括:
獲取待置于優(yōu)先級(jí)隊(duì)列中的各元素的優(yōu)先級(jí)級(jí)別序列;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京金山安全軟件有限公司,未經(jīng)北京金山安全軟件有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/201510427912.1/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F7-00 通過(guò)待處理的數(shù)據(jù)的指令或內(nèi)容進(jìn)行運(yùn)算的數(shù)據(jù)處理的方法或裝置
G06F7-02 .比較數(shù)字值的
G06F7-06 .將單個(gè)記錄載體上的數(shù)據(jù)進(jìn)行排序、選擇、合并或比較的裝置
G06F7-22 .用于排序或合并在連續(xù)記錄載體
G06F7-38 .只利用數(shù)制表示,例如利用二進(jìn)制、三進(jìn)制、十進(jìn)制表示來(lái)完成計(jì)算的方法或裝置
G06F7-58 .隨機(jī)數(shù)或偽隨機(jī)數(shù)發(fā)生器
- 仲裁器電路
- 轉(zhuǎn)發(fā)報(bào)文的方法和網(wǎng)絡(luò)設(shè)備
- 一種寬帶碼分多址系統(tǒng)中優(yōu)先級(jí)的配置方法
- 處理優(yōu)先級(jí)的提高方法、裝置及系統(tǒng)
- 差分串行通信鏈路中的多優(yōu)先級(jí)通信
- 高效的優(yōu)先級(jí)感知線程調(diào)度
- 業(yè)務(wù)請(qǐng)求的響應(yīng)方法和裝置
- 一種優(yōu)先級(jí)隊(duì)列設(shè)計(jì)方法及優(yōu)先級(jí)隊(duì)列設(shè)計(jì)裝置
- 一種IO調(diào)度方法、裝置和設(shè)備
- 線程優(yōu)先級(jí)調(diào)整方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 隊(duì)列調(diào)度系統(tǒng)及方法
- 一種從多隊(duì)列節(jié)點(diǎn)獲取消息的方法及系統(tǒng)
- 隊(duì)列請(qǐng)求處理方法和裝置
- 一種隊(duì)列清空方法以及相關(guān)設(shè)備
- 一種基于Linux通用塊層多隊(duì)列的優(yōu)化系統(tǒng)及方法
- 一種分離存儲(chǔ)的隊(duì)列實(shí)現(xiàn)方法及裝置
- 一種數(shù)據(jù)處理方法、裝置及計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 一種接口擁塞時(shí)延的計(jì)算方法及裝置
- 一種報(bào)文調(diào)度方法及裝置
- RDMA網(wǎng)絡(luò)下的網(wǎng)卡隊(duì)列創(chuàng)建方法以及裝置
- 針織設(shè)計(jì)裝置和設(shè)計(jì)方法、設(shè)計(jì)程序
- 燈具(設(shè)計(jì)1?設(shè)計(jì)3)
- 頭燈(設(shè)計(jì)1?設(shè)計(jì)2?設(shè)計(jì)3)
- LED透鏡(設(shè)計(jì)1、設(shè)計(jì)2、設(shè)計(jì)3)
- 設(shè)計(jì)用圖形設(shè)計(jì)桌
- 手機(jī)殼(設(shè)計(jì)1設(shè)計(jì)2設(shè)計(jì)3設(shè)計(jì)4)
- 機(jī)床鉆夾頭(設(shè)計(jì)1設(shè)計(jì)2設(shè)計(jì)3設(shè)計(jì)4)
- 吹風(fēng)機(jī)支架(設(shè)計(jì)1設(shè)計(jì)2設(shè)計(jì)3設(shè)計(jì)4)
- 設(shè)計(jì)桌(平面設(shè)計(jì))
- 設(shè)計(jì)臺(tái)(雕塑設(shè)計(jì)用)
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





