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

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


咨詢
建站咨詢
