Csharp/C#教程:C#中实现PriorityQueue优先级队列的代码分享

前言

前段时间看到有大佬对.net 6.0新出的PriorityQueue(优先级队列)数据结构做了解析,但是没有源码分析,所以本着探究源码的心态,看了看并分享出来。它不像普通队列先进先出(FIFO),而是根据优先级出队。
ps:读者多注意代码的注释。

D叉树的认识(d-ary heap)

首先我们在表示一个堆(大顶堆或小顶堆)的时候,实际上是通过一个一维数组来维护一个二叉树(d=2,d表示每个父节点最多有几个子节点),首先看下图的二叉树,数字代表索引:

C#中实现PriorityQueue优先级队列的代码

任意一个节点的父节点的索引为:(index – 1) / d任意一个节点的左子节点的索引为:(index * d) + 1任意一个节点的右子节点的索引为:(index * d) + 2它的时间复杂度为O(logndn)
通过

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1047090.html

(0)
上一篇 2022年2月11日
下一篇 2022年2月11日

精彩推荐