Geeks : Dijkstra’s Algorithm for Adjacency List Representation 最短路径
最短路径的O(ElgV)的解法。使用邻接表存储图,使用堆操作选取下一个最小路径点。本题的难度并不在最短路径本身这个算法,而是在于堆的操作:1使用双重指针操作堆的节点,可以省去直接复制操作堆节点,提高效率,并且这才是有效操作动态地址数据的方法,不用双重指针,我思考了下,觉得更加不好做。2使用一个数组记录当前顶点在堆中的位置,相当于一个hash表了,可以需要的时候,直接从表中查找表示顶点的堆节点在堆中的位置,要记得更新节点时维护好这个表。3释放内存的时候注意,弹出堆的节点可以马上释放,不过注意不要双重释放内存了记得曾经看到网上有人说堆排序是百万年薪的算法,不过现在看来光是堆排序是非常简单的算法了,会堆排序应该得达不到百万
用户评论