![](https://img-blog.csdnimg.cn/20190829203834746.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Algorithm
文章平均质量分 90
AlbertS
一个手残党怀着对游戏的好奇心踏上了开发之路,旅途中磕磕绊绊踩了不少坑,触了不少雷,深知好记性不如烂笔头的道理,于是记录下学习路上的点点滴滴,努力在这个浮躁的年代做一个专注的人,携码起舞,与君共勉。
Coding是件有趣的事情,快乐的看待每一天,我真的非常幸福~
展开
-
Dijkstra——通过不断松弛来解决单源最短路径问题的算法
Dijkstra算法又称迪杰斯特拉算法,它采用的是一种贪心的策略,使用广度优先搜索的方式解决带权有向图或者无向图的单源最短路径问题,需要注意的是它不能处理带负边权的情况,核心思想就是“守住现有阵地不断攻占底盘”,这一点可以在后面代码实现中慢慢体会,接下来梳理一下算法思路...原创 2021-09-12 23:38:00 · 1942 阅读 · 2 评论 -
Floyd-Warshall——仅用4行代码就能解决多源最短路径问题的算法
Floyd-Warshall算法简记Floyd算法,又称弗洛伊德算法,是解决任意两点间的最短路径问题的一种常用算法,核心思想就是“不断利用第三者影响原配关系”,这一点在5行核心代码中表现的淋漓尽致,接下来梳理一下算法思路...原创 2021-09-07 01:19:36 · 664 阅读 · 0 评论 -
写给自己的KMP——C++版本
又翻到了这个算法,一个常用的子串(子数组)匹配算法,看一遍学一遍,学一遍忘一遍,反反复复,不过每次回忆起来所用的时间越来少了,其本质上就是在暴力搜索的基础上加上 next 数组加速匹配,算法的关键在于 next 数组的理解和求解方法...原创 2021-04-05 00:30:36 · 459 阅读 · 1 评论 -
C++求解组合数的具体实现
很少写关于具体算法的总结笔记,因为很难把一个算法从头到尾的叙述清晰并且完整,容易造成误解。这次想总结一下组合数的具体实现,原因是最近总是碰见组合数,所以决定来写写,免得每次从头推导公式耽误时间。排列组合经常会作为一个问题解决方案中一部分...原创 2020-09-20 12:54:34 · 12832 阅读 · 36 评论 -
时分秒针在一天之内重合多少次
文章目录前言时针和分针的相遇代码实现运行结果分析总结前言分析问题之前先给出问题的答案:2次,送给急需要知道答案又不求甚解的朋友。这个问题之前听过类似的,一直没有当回事,今天在解题的时候发现了这道题,于是动脑筋想了一下,从12点位置时分秒3个表针重合开始,第一次应该在1点5分之后,那是分针转了一圈快追上时针了,再稍微走一点就能追上,然后秒针再转过来就完成了第一次重合,同理在2点10分之后也有一...原创 2019-07-23 20:56:51 · 8222 阅读 · 12 评论 -
排序算法系列之(六)——逐步砍掉树杈的堆排序
文章目录前言堆排序排序过程代码实现代码分析运行测试前言在实现堆排序之前,我们先来看看常见的数据结构,在网上我看到了一个特别全的版本:数组,栈,链表,队列,树,堆,图,散列表,本着鸡蛋里挑骨头的态度,我们来看看数组和链表,这两个到底算不算数据结构,貌似它们应该算是线性表这个结构,它们更应该被称作是一个实现结构的元素,比如通过数组和链表可以实现线性表、队列、栈,二叉树等等,可是看看数据结构的定义是...原创 2019-06-30 00:09:10 · 1145 阅读 · 32 评论 -
排序算法系列之(五)——为目标打好基础的希尔排序
前言刚刚分析过的插入排序通常被叫做简单插入排序或者直接插入排序,而这篇文章刚好以插入排序为基础来说说希尔排序,还是先从名字开始,结果发现完全没有头绪,说实话第一次听说这个排序时还以为是个特别神奇的高端算法,结果了解一番之后发现其实是一个被改造的插入排序,“希尔”居然是发明者的名字,所以从名字来判断算法思想在这里行不通,甚至说快速排序起码说明了这种方法排序快,而希尔排序等于什么都没说。希尔排序...原创 2019-03-09 16:07:18 · 565 阅读 · 0 评论 -
排序算法系列之(四)——抓扑克牌风格的插入排序
前言上次聊到了快速排序,我们说到快排这个名字是非常抽象的,究竟什么是快排,从名字上我们无从得知,或许叫二分排序都比快速排序要形象的多,可是这又和归并排序重复了,所以我们还是不要在意快排的名字了,接下来看一下今天的插入排序,这里指的是简单的插入排序。插入排序相比于快速排序要形象很多,整个排序过程就是在不断的插入操作中完成的,如果你打过扑克基本上很容易理解这种排序方法,排序的过程几乎与抓扑克牌的...原创 2018-12-08 16:52:55 · 2876 阅读 · 2 评论 -
排序算法系列之(三)——略显神秘的快速排序
前言继续我的填坑旅程,上次说到《排序算法系列之(二)——冒泡排序名字最为形象的一个》2017-09-16 10:42:07,又过了半年多,终于再一次骨气勇气决定聊一聊快速排序的思路,不过与冒泡排序不同的是,这个快速排序的名字似乎和算法的思路没有什么关系,这个名字太抽象了,起这个名字可能当初仅仅是因为它比别的排序快一点。咳咳!抽象的名字不利于我们对于算法思路的理解,或许这就是我为什么当初认为...原创 2018-04-08 20:14:26 · 868 阅读 · 0 评论 -
排序算法系列之(二)——冒泡排序名字最为形象的一个
前言大约在上个冬季我给自己挖了一个坑(想要总结排序~~(>_<)~~),感觉把自己埋起来会暖和一点,可是大约一年过去了,埋的越来越深,却丝毫感觉不到暖意……被我的诗意打动了有没有,已经深深的折服了有没有,呵呵,我自己都不信!还是继续来说说排序...原创 2017-09-16 10:42:07 · 1748 阅读 · 0 评论 -
排序算法系列之(一)——选择排序清新脱俗的一面
前言大家还记得我几个月前挖的一个大坑吗?非要自不量力的来讲讲排序家族的故事,这不是!今天我回来继续填这个坑,搞不好会把自己埋在这了/(ㄒoㄒ)/~~话说关于这些排序算法的总结网上各种版本的都有,并且有些写的非常详细,如果你想对比各种算法的优缺点、复杂度、稳定性等等,建议你去看看那些文章,对于知识的积累还是非常有帮助的,最起码可以应付一些考试和面试。今天我突然来了兴致,也想来写写排序算法,那么我们先拿原创 2017-02-15 16:29:08 · 1065 阅读 · 0 评论 -
排序算法系列之(零)——排序初体验
一直想总结一下排序这个系列,可总是抽不出大块的时间来整理,算法这个东西没有充足的时间反复磨合是不能完全消化吸收的,回想一下我上一次总结排序算法还是在大学期间的图书馆里,转眼间毕业后工作已经两年多了,我对这些算法又有了不同的理解,有时候会有顿悟的感觉,就是那么突然的一瞬间,仿佛一切都明白了。说起排序算法,算是我用的比较多的算法之一了,回想当年奋战ACM竞赛的时候,排序是一个无法避开的点,而我用的最多的原创 2016-11-09 13:48:43 · 1039 阅读 · 0 评论 -
我的KMP实现
前言之前在搞ACM的时候了解过KMP,可是最近发现细节记不清楚了,索性重新看一遍这些基础的算法,我们先来看一下定义:“KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)”。这里对KMP的定义是字符串匹配算法,当然这个算法不仅仅是用来处理字符串的,你可以应用于查找子序列的各种问题中原创 2016-10-27 16:46:33 · 874 阅读 · 0 评论