新聞中心
優(yōu)先隊(duì)列(priority queue) 是很重要的數(shù)據(jù)結(jié)構(gòu)。我在做 ACM 題時(shí)就經(jīng)常要用到她。C++ STL 就包括 priority_queue 。Java 也有 PriorityQueue 類。遺憾的是,.NET Framework Base Class Library 中并不包括優(yōu)先隊(duì)列。于是,我只好自己用 C# 語(yǔ)言寫一個(gè),如下所示:

站在用戶的角度思考問題,與客戶深入溝通,找到陵川網(wǎng)站設(shè)計(jì)與陵川網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋陵川地區(qū)。
using System; |
如上所示,這個(gè) PriorityQueue 泛型類提供四個(gè)公共構(gòu)造函數(shù),第一個(gè)是無參的構(gòu)造函數(shù),其余的構(gòu)造函數(shù)允許指定優(yōu)先隊(duì)列中包括的初始元素?cái)?shù)(capacity)、如何對(duì)鍵進(jìn)行比較(comparer)。
這個(gè)程序使用堆(heap)來實(shí)現(xiàn)優(yōu)先隊(duì)列。所以,所需的空間是最小的。Count 屬性和 Top 方法的時(shí)間復(fù)雜度是 O(1),Push 和 Pop 方法的時(shí)間復(fù)雜度都是 O(logN)。
我曾經(jīng)用 List 泛型類實(shí)現(xiàn)過一個(gè)優(yōu)先隊(duì)列,請(qǐng)參見我的博客 Timus1016. A Cube on the Walk 。雖然更簡(jiǎn)單,程序代碼只有 23 行,但是效率不高,其 Push 和 Pop 方法的時(shí)間復(fù)雜度都是 O(N)。
【編輯推薦】
- 詳解C#編程中的反射機(jī)制與方法
- C#中使用擴(kuò)展方法對(duì)調(diào)用進(jìn)行驗(yàn)證
- 詳解C#代碼文件生成擴(kuò)展代碼文件
分享題目:簡(jiǎn)述用C#實(shí)現(xiàn)優(yōu)先隊(duì)列方法
分享路徑:http://www.dlmjj.cn/article/dpiehjj.html


咨詢
建站咨詢
