代码改变世界

随笔档案-2012年6月27日

最小优先级队列(基于最小二叉堆算法)

2012-06-27 22:03 by java线程例子, 426 阅读, 收藏,
摘要: 在最小生成树Prim算法中,可以利用最小优先级队列来改善时间复杂度,同时在单源最短路径Dijkstra算法中也同样可以利用这种最小优先级队列来改善算法时间复杂度。实现最小优先级队列可以有很多种方式,比如基于二叉最小堆,或者斐波那契堆等。这里是二叉最小堆的C#实现,原理是根据书上的伪代码来的,但有些地方我做了改进,比如书key值改变,原来书上只能变大,这里取掉了这个限制。同时还提供了根据卫星值来选择元素的功能,下面是代码: /// <summary> /// 队列元素包装类 /// </summary> /// <typeparam name="T&quo 阅读全文