算法积累
文章平均质量分 92
mgsky1
这个作者很懒,什么都没留下…
展开
-
【算法】选择排序(从小到大) 排序范围(0~n-1) n为数组元素个数
今天我们就来谈谈排序算法中的简单排序算法之----选择排序原创 2017-06-29 11:24:45 · 4982 阅读 · 0 评论 -
【算法】基于AOV网的拓扑排序
写在前面:这篇文章在一周前就应该发的,后来因为腾讯面试拖到现在,虽然现在下动车也有一两个小时了,但是感觉自己好像还在路上颠簸。昨天去腾讯深圳总部面试,深圳总部啊!马爸爸在的地方!可惜跪了。可能是因为我主要偏软件开发然后投了运维简历投偏了吧,腾讯的面试还真是玄学呢!我也感受到自己已经达到了技术瓶颈,回炉修炼~ 图的这一章节终于快复习完了,加油加油!今天要总结的是拓扑排序,是基于AOV网的。...原创 2017-09-19 08:50:53 · 2329 阅读 · 5 评论 -
【经典问题】汉诺塔(递归、C语言实现)
这个月在学习Python,函数递归那一节提到了汉诺塔问题,这是一个很经典的问题,我们老师在之前也提到过这个例子,感觉蛮重要的,想记录下来。为了向经典致敬,这篇就不用Python实现了,就用C语言~ 汉诺塔的来历我就不细说了,这里就自行左拥度娘右抱谷歌脑补一下。请看下面这张图,图片来自Google Images 我们要做的就是将A中的圈圈,移动到C上,每次只能移动一个圈圈,并且要保障大...原创 2018-01-17 22:27:11 · 25062 阅读 · 10 评论 -
【算法】图的最短路径(Dijkstra算法)
今天要总结的是图的迪杰斯特拉算法。这个算法是针对有向带权图的,求的是图中某一个定点到其余所有顶点的最短路径。 下面说说这个算法的基本思想吧:设定两个集合A和B,A中存放我们已经处理过的顶点,B中存放图中剩余顶点。刚开始的时候,A中只有一个我们选定的起点v0,每一次从集合B中取到v0的代价最小的点并入,每一次并入时都需要修改v0到B中顶点的代价,直到所有的顶点都原创 2017-09-14 08:37:11 · 5141 阅读 · 2 评论 -
【算法】基于AOE网的关键路径算法
这是图算法的最后一个比较重要的部分,就是关键路径。什么是关键路径,关键路径有什么用呢?我又去抱了抱度娘的大腿,发现这个是杜邦公司发明的算法,是用来算工期的。在工程上,我们都很讨厌工程的延期,同时一个工程由分为很多的节点,我们不知道哪些节点决定着这个工程是否会延期,每一个部分有没有可以伸缩的时间,于是,这个用来计划工程的关键路径算法就诞生了。看来,数据结构的应用真的不仅仅局限于处理计算机本身的问题上原创 2017-09-28 15:58:21 · 3081 阅读 · 1 评论 -
【算法】图的最短路径(Floyd算法)
现在离考研还不到100天了,杜绝胡思乱想,活在现实中~不过我发现算法的文章阅读量不高啊,是不是我说的不好呢~如果哪里需要改进的各位可以评论区留言。还是现在都比较注重应用层面了呢? 今天总结的是图的最短路径的另外一种算法---弗洛伊德算法。与前面迪杰斯特拉算法不同的是,弗洛伊德算法求的是图中任意一对顶点之间的最短路径,当然,仍然针对有向带权图。 我们就先直接进入算法的演算过程吧~大家...原创 2017-09-16 08:21:16 · 21110 阅读 · 19 评论 -
【算法】图的最小生成树(Prim算法)
写在前面:从今年1月到现在,准备考研大概也有半年多了,前一阵子因为准备腾讯的简历花了几天,还不知道鹅厂给不给我笔试的机会,就当一次职场实践了。准备考研给我的感觉跟考证完全不一样,考证没有名额的限制,只要你过线,就发给你证;考研就不同了,一群人抢那几个名额,过线还不一定顶用,更何况现在一堆的名师啊,机构啊做宣传,划重点,现在独自默默看书的我有压力,感觉学习就变味了TAT。。。完全成了应试。。。这样以原创 2017-09-02 12:06:06 · 3275 阅读 · 0 评论 -
【算法】图的最小生成树(Kruskal算法)
这篇文章是2.0版本,修正了前一版中的错误,感谢广大网友指正!前面介绍了图的最小生成树的Prim算法,这个算法是从顶点的角度来刻画生成树的。今天要说的Kruskal(克鲁斯卡尔)算法,是从边的角度来进行刻画的。 Kruskal算法用到的数据结构有: 1、边顶点与权值存储结构(即图是由连接某一条边的两个顶点,以及这条边的权值来进行存储,具体看后面的例子) 2、并查集(具体是什...原创 2019-07-15 17:53:36 · 102408 阅读 · 42 评论 -
【算法】插入排序(从小到大) 排序范围(0~n-1)n为数组元素个数
我们再来谈谈另外一个基本排序算法,插入排序。 插入排序的思想也是十分简单。我们在排序范围(begin,end)中,选择数组下标为end的元素作为基准值,从它的前一个元素开始,向前遍历。在遍历过程中,把遍历到的值与基准值进行对比,如果比基准值大,就把这个值后移,遍历下标i前移。直到找到一个元素,比基准值小,或者遍历到数组头后结束,得到一个下标值,即插入位置。最后将基准值插入到这个下标值中。原创 2017-06-29 19:44:34 · 4041 阅读 · 0 评论 -
【算法】快速排序算法(递归实现 从小到大排列) 排序范围(0~n-1) n为数组元素个数
今天就来谈谈快速排序,我们也不详谈快速排序的时间复杂度,我们重点来分析一下快速排序的思想。 快速排序的思想十分简单,假设给定一个无序的数组,我们要从小到大排列,我们只需要完成以下几步 1、选取这个数组中的某一个元素为基准值,它的下标为基准点,这样数组就被分成了左右两个部分 2、将这个基准点左边的所有元素排好序(比这个基准值小) 3、将这个基准点右边的所有元素排好序...原创 2017-06-28 11:14:25 · 16496 阅读 · 0 评论 -
【算法】冒泡排序(从小到大) 排序范围(0~n-1)n为数组元素个数
今天要谈的是基本排序算法中的冒泡排序。除了冒泡排序,基本排序算法还包括:选择排序、插入排序。 插入排序算法的思想也是很简单的,它把排序过程模拟成了从水底冒气泡的过程。一趟排序过程结束后,最小(最轻)的元素就已经“浮”到水面上了。接下来就是不断缩小排序范围,把每个排序范围中最小的元素交换到数组头。 接下来就来分析算法,我们使用的数据是1 3 2 8 0 6 共6个元素 我们原创 2017-06-30 21:52:39 · 6651 阅读 · 0 评论 -
【算法】将一维数组arr中的元素循环左移p个位置
要准备考研了,现在也开始看专业课了。传统的数据结构和算法啊!现在也在看书,看一些做一些记录吧,也算是积累,不仅仅是考研,说不定以后也用的上~ 今天要谈的是【将一维数组中的元素循环左移P个元素】 题目是这样的:设将n(n>1)个整数存放到一维数组R中,设计一个算法,将R中的序列循环左移P(0<P<n)个位置,即将R中的数据由{X0,X1,...,Xn-1}变换为{Xp,Xp...原创 2017-05-03 23:35:35 · 12216 阅读 · 6 评论 -
【经典问题】括号匹配问题
文章目录前言例题算法思想算法举例代码栈类括号匹配核心算法完整代码运行结果前言括号匹配问题算是栈应用中比较经典的问题了,在数据结构的书中还有各种考试中会出现。最近刷题的时候也遇到了,就想写一篇文章整理一下。例题题目来自Leetcode中国给定一个只包括 (,),{,},[,] 的字符串,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的...原创 2019-05-27 21:57:35 · 45833 阅读 · 3 评论