算法成长之路
文章平均质量分 82
记录了学习算法的过程
DWQY
这个作者很懒,什么都没留下…
展开
-
九种排序方法辨析
虽然网上有很多关于排序的文章,但那毕竟是别人。还是决定自己写一写,说不定会发现新的东西。如有错误,请务必指正! 目前为止学过的排序依次包括:冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序,堆排序,基数排序,计数排序。 &...原创 2020-05-03 01:06:37 · 984 阅读 · 0 评论 -
P,NP,NPC,NP-Hard,co-NP问题辨析
学算法学到这章,真是神仙打架。上网学习各位前辈的文章,看的我也是眼花缭乱。终于看到一篇易于理解的(网址附于文末),看过之后写写自己的理解。如有错误,请各位前辈指正! P问题,在这里不说全称了,感觉说了也没用。P问题就是指能在多项式时间求解出的问题。举个例子...原创 2020-05-02 00:36:05 · 6995 阅读 · 9 评论 -
贪心算法
贪心算法又叫贪婪算法(greedy algorithm),是一种基于分治思想的求解“最优解”的算法。至于为什么打上双引号,请听我慢慢道来。 其实贪心算法在生活中应用十分广泛,最常举的例子就是找钱的问题。如果从找的总张数最小的角度考虑:想找26块钱,正常的方...原创 2020-05-02 00:31:18 · 1020 阅读 · 0 评论 -
动态规划
动态规划是分治之后的章节,后面紧跟着就是贪心算法。动态规划和这两个都有联系,勉强算是承上启下的关系吧。网上看了各种文章,眼花缭乱,静下来写写自己的理解,如有不足之处,请指教! 动态规划也是使用了分治和递归的思想,但和之前理解的分治和递归有所不同,下面分析一...原创 2020-05-02 00:26:37 · 272 阅读 · 0 评论 -
基于递归的技术
递归是一种简化运算规模的方法。将每个问题分为一个个子问题,子问题从结构上来看与原问题相同,但是运算规模小于原问题。不断递归下去,直到有一个子问题是已知可解决的。反过来再将每一个完成的子问题作为父问题的输入,直到回到第一层得到最终的结果。 书中把递归分为了归...原创 2020-03-30 00:28:40 · 646 阅读 · 0 评论 -
堆
数据结构——堆 相较于其他数据结构,堆是新接触到的。那么就在今天仔细地研究一下。 什么是堆?堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象(节选自百度百科)。简单点看,堆也是二叉树的一种。分为大顶堆(父...原创 2020-03-19 23:48:46 · 1572 阅读 · 0 评论 -
数学预备知识
研究算法的目的就是以设计时间复杂度更小的算法,但要想对算法进行优化必须学会计算每一个步骤的算法大小,进而从中寻找可以缩减的位置。为了计算每一步,有必要掌握一些基本的数学知识,有句话说过:数学水平在一定程度上决定了计算机的高度。 对于大多数算法而言,都应用到...原创 2020-03-18 00:26:43 · 770 阅读 · 0 评论 -
算法分析基本概念
一个算法的要求有四个:有输入、有输出、有限性、确定性。 有一个很著名的公式是程序=数据结构+算法。由该式子能看出算法和程序的关系,算法是一段有限序列能够解决一个问题,是解决问题的方法。程序是一个实在的东西,能够解决一个问题。算法和程序相比,算法强调的是方...原创 2020-03-16 12:51:19 · 1347 阅读 · 0 评论 -
算法绪论(开始篇!)
大二下了,开始学习算法。都说写博客比较好,能够及时整理思路。所以学习优点,写写博客记录一些知识和自己的思考。写的不好,还望各位前辈多多指教!对于算法的理解有两方面:一方面是解决问题的算法,像数据结构中学习的一些经典算法(像DIJ算法等),另一方面是对于简单问题的不同算法(根据我亲身经历,针对于实现链表倒置有多种不同的算法。这里面就分好的算法和坏的算法,好的算法代码十行以内,坏的算法三四十行。)所...原创 2020-02-29 21:50:41 · 270 阅读 · 0 评论