摘要: 注1:N为定点数,M为边数 注2: Floyd的编码复杂度较小,均摊到每个点上的时间复杂度并不算太高,如果是求所有点对间的最短路径,或数据范围较小,Floyd算法较为合适 注3: Dijkstra用堆优化后,时间复杂度可以达到O(MlogN),具有良好的扩展性,最大的缺点是不能解决负权的问题 阅读全文
posted @ 2017-08-23 22:08 戴林甫 阅读(579) 评论(0) 推荐(0) 编辑
摘要: 实现思路: 1.准备一个一维数组h存放数组和一个变量记录n堆的个数 2.创建堆。只分析前一半的节点,因为后面的节点都是这些节点的子节点。然后从第一个节点开始。找到其左右节点。比较大小。需要改变顺序的就改变。 3.堆排序。每次都取出堆顶点,存入一个数组。改变堆的现有数量并进行调整,使该二叉树依旧是最小 阅读全文
posted @ 2017-08-23 21:07 戴林甫 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 【啊哈!算法】算法9:开启“树”之旅 http://ahalei.blog.51cto.com/4767671/1403823 我们先来看一个例子。 这是什么?是一个图?不对,确切的说这是一棵树。这哪里像树呢?不要着急我们来变换一下。 是不是很像一棵倒挂的树,也就是说它是根朝上,而叶子朝下的。不像? 阅读全文
posted @ 2017-08-23 09:35 戴林甫 阅读(142) 评论(0) 推荐(0) 编辑