算法
Yu_tiann
这个作者很懒,什么都没留下…
展开
-
归并排序——迭代实现
背景:在严蔚敏老师的那本的数据结构的书中,只给出了归并排序的递归实现代码,且注释说:递归形式的算法在形式上较简洁,但实用性差。因此这里参考小甲鱼数据结构教学视频中的代码,进行归并排序迭代实现方式的分析和理解。(小甲鱼的视频基本参考《大话数据结构》)算法理解:归并排序的递归方式很好理解(见严蔚敏数据结构教材即可),递归即直接假设结果已经达成,直接实现最后一步。在归并排序中就是直接写:m...原创 2020-03-16 17:59:38 · 1331 阅读 · 0 评论 -
关键路径——CriticalPath算法
背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的。该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解。关键路径:即决定一项工程的完成时间的路径。如下图所示,是一辆汽车的生产流程,其中外壳、发动机、轮子等的生产过程都是可以并行进行的,但是发送机生产需要的时间最长,而只有所有零部件生产完成才才能进行下一步,因此图中用红色加粗的那一条路径即为该工程的关...原创 2020-03-13 00:57:14 · 1348 阅读 · 1 评论 -
最短路径——Floyd算法
背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的。该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解。Floyd算法理解:Floyd算法其实非常的直观和简洁,而且可以解算出从以图的任何一个顶点作为起点和终点的最短路径(相对于Dijkstar算法的优势),这也是它虽然在时间复杂度上不如Dijkstar算法,却依然广泛流行的原因。D数组:保存任意两个...原创 2020-03-12 19:51:59 · 238 阅读 · 0 评论 -
最短路径——Dijkstar算法
背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的。该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解。Dijkstar算法理解:Dijkstar算法的核心思想就是通过一次一次的迭代,逐个寻找起始顶点到图中每一个顶点的最短路径,并在确定一个顶点的最短路径之后,设置标志位,同时根据最新确定的顶点的最短路径,对其他与之相关顶点的最短路径进行修正和更新。...原创 2020-03-12 17:36:23 · 963 阅读 · 0 评论 -
最小生成树——Kruskal算法理解
背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的。该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解。Prim算法理解:如图(摘录自小甲鱼教学视频中的图片),是一个带有权值的连通网:根据上图可以列写出该连通网的邻接表,为了方便直观的理解:(邻接表初始化需按照权值增序排列)edges数组 begin end weigh...原创 2020-03-12 13:01:53 · 627 阅读 · 0 评论 -
最小生成树——Prim算法理解
背景:本文是在小甲鱼数据结构教学视频中的代码的基础上,添加详细注释而完成的。该段代码并不完整,仅摘录了核心算法部分,结合自己的思考,谈谈理解。Prim算法理解:如图(摘录自小甲鱼教学视频中的图片),是一个带有权值的连通网。根据上图可以列写出该连通网的邻接矩阵,为了方便直观的理解:权值 V0 V1 V2 V3 V4 V5 V0 0...原创 2020-03-11 21:44:46 · 362 阅读 · 0 评论 -
马踏棋盘算法——递归实现(回溯法、深度优先遍历)
背景:在学习数据结构时,关于图的遍历的一个经典问题,这里采用递归的方式实现该算法,其中包含回溯法和图的深度优先遍历的思想,在参考各种递归实现该算法的基础上,完成了一版带有自己理解的详细注释版代码开发环境:Code::Blocks编译器:GCC语言:C代码:(详细注释)/* 递归+回溯+图深度优先遍历 */#include <stdio.h>#include &...原创 2020-03-11 13:15:29 · 829 阅读 · 0 评论