![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和数据结构
qqchenjian318
这个作者很懒,什么都没留下…
展开
-
算法(一)排序算法(桶排序、冒泡排序、快速排序)
前言这些一个系列的文章,主要是自己学习算法和数据结构的一些笔记整理。从最简单开始,一步步深入,都是自己学习过程中的领悟。对于程序猿而言,算法和数据结构就像一门强大的内功,练的过程中,会比较难,相对于武学招式,需要更多的理解能力和悟性,但是一旦练成,那就能变身强大的武林高手,纵横武林,不再是梦想。本系列武林秘籍主要来自于个人学习《啊哈!算法》《算法导论》这两个算法的入门级书籍。所以,高手就不喜勿喷啦...原创 2017-04-07 18:43:32 · 6014 阅读 · 3 评论 -
算法(二)枚举算法(穷举法)之火柴棍等式
前言这是本系列的第二篇文章,从名字就可以看出,将要学习穷举算法,也叫枚举法,噫,有同学可能就要问了,穷举也算算法吗?当然算啦,别拿豆包不当干粮,拿乞丐不当江湖中人,事实上,江湖上很多鼎鼎有名的高手,就来自于天下第一大帮,丐帮。所以,枚举其实也是一种算法思想。现在我们就来学习神功的第二层,枚举算法实际需求也就是火柴等式,比如 1 + 1 = 2,其中1是两根,+号是两根,=号是两根,2是5根火柴。那...原创 2017-04-23 15:04:07 · 1529 阅读 · 0 评论 -
算法(三)搜索算法(一)(深度优先搜索)之地图迷宫
前言前面两篇文章,只是讲了一下算法的入门,排序算法和枚举算法,大家是不是觉得很简单呢?那么这篇文章,我们就有学习一下,稍微有点难度的,也是面试、笔试经常见到的深度优先搜索。而常见的搜索算法就有,上篇文章中所介绍的穷举算法、以及本篇将要介绍的深度优先搜索,以及暂时不会介绍的A*算法、回溯算法、混沌搜索等,当然最高深的搜索算法,就是百度和google的看家本领了。那就不是我们现在能够理解的范围了,他们...原创 2017-04-24 17:57:33 · 1102 阅读 · 0 评论 -
算法(四)搜索算法(二)(广度优先搜索)
前言在上一篇博客中,我们学习了搜索算法的第一种:深度优先搜索,这篇博客就让我们一起来学习另一种大家都经常听见的搜索算法:广度优先搜索。看名字就知道,他们两者之间肯定有什么不可告人的秘密。广度优先搜索,又叫宽度优先搜索,英文名:Breadth First Search。属于一种盲目搜寻方法,目的是系统的展开并且搜索图中所有的点,以找寻结果。我们还是以上篇博客后面提到的那个迷宫地图的问题来详细介绍一下...原创 2017-05-03 17:13:57 · 915 阅读 · 0 评论 -
算法(五)最短路径之Floyed-Warshall算法
前言算法中的最短路径问题,是一个经典的算法问题。旨在寻找图(由顶点和边组成)中顶点到顶点间的最短路径。而我们接下来的几篇文章就会一起学习最短路径问题中常用的Floyed-Warshall、Dijkstra、Bellman-Ford以及Bellman-Ford的队列优化这四种算法。这些最短路径的算法在实际运用中也有不可忽视的作用。接下来,我们就来学习一下Floyed-Warshall算法。具体问题在...原创 2017-05-16 14:53:06 · 1018 阅读 · 0 评论 -
算法(六)最短路径之Dijkstra算法
前言在上一篇博客中,我们学习了最短路径系列的第一种算法Floyd-Warshall算法来求解图中点与点之间的最短路径的问题。这篇博客我们就要来学习一下,求解单源最短路径的一种算法:Dijkstra算法。具体问题还是几个城市间的最短路径问题,这次我们需要求的是1号顶点到其余个点的最短路径。路径图如下现在我们需要求解1号点到2、3、4、5、6号点的最短路径。Dijkstra算法 图的...原创 2017-05-16 19:19:04 · 581 阅读 · 0 评论 -
算法(七)最短路径之Bellman-Ford算法
前言 前面两篇文章,我们分别学习了Floyed-Warshall和Dijkstra算法。还有印象吗?这篇文章我们就来学习一下另一种最短路径的算法,Bellman-Ford算法和一些邻接表的知识。在上篇文章中学习的Dijkstra算法的时间复杂度是O(N*N),那有没有什么可以优化速度的方法呢?首先,这篇文章就先学习一下 通过邻接表来优化Dijkstra算法,然后再学习一下Be...原创 2017-07-16 17:18:15 · 650 阅读 · 0 评论 -
算法(八)最短路径之Bellman-Ford算法的队列优化以及几种最短路径算法对比
前言从上篇博客的,Bellman-Ford算法介绍的最后一部分,我们指出,其实,可以对该算法进行进一步的优化。原因是因为:其实在每一轮松弛操作结束后,就会有一些顶点已经求得其最短路径。此后这些顶点的最短路径的估计值就会一直保持不变,但是每一次都还要对其进行判断。这里浪费了时间,这就启发了我们每次仅对最短路估计值发生了变化的顶点的所有出边执行松弛操作。所以下面我们学习Bellman-Ford算法的队...原创 2017-07-31 20:12:54 · 631 阅读 · 1 评论