![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
liao_hb
这个作者很懒,什么都没留下…
展开
-
认识动态规划
你的打赏是我奋笔疾书的动力!概念篇线性规划:下图给出了模型其中目标函数和约束条件里面的不等式函数都是关于xi的线性函数。这类问题都有一些不错的求解方式。整数规划:若在线性模型中,变量限制为整数,则称为整数线性规划,即为整数规划,可见整数规划狭义上考虑的是线性问题。然而今天,我们不谈线性规划的这种求最优的问题,之后会专门开辟一个题目来谈,我...原创 2018-04-22 21:47:34 · 1035 阅读 · 0 评论 -
原地(原址、就地)排序和稳定排序
不了解这2个概念的同学可能会认为他俩之间有着某种一丝丝的联系,毕竟哲学上讲过万物都是联系的,但是我要说的是他们从科学概念上出发毫无联系。上一讲就讲过稳定排序,是指在排序算法中,相同值的两个元素,在输入数组中先出现的数在输出数组中也先出现。像冒泡排序,插入排序,基数排序,归并排序等都是稳定排序。原地(原址、就地)排序是指:基本上不需要额外辅助的的空间,允许少量额外的辅助变量进行的排序。就是在...原创 2018-08-01 17:56:19 · 12674 阅读 · 6 评论 -
A*算法
所有的知识都来自于大师们的慷慨遗传,我们书写的只是他们的代代相传。A星算法是最优的寻路算法,常用于游戏中寻找地图上2点之间最低耗价的路径,当然,没一点有各种属性,例如,点有横纵坐标,点有地形属性,是属于沼泽,还是沙丘,又或者是平地, 游戏中人物经过此点的耗价肯定是不一样的,这个耗价相当于数据结构中图上的权重,然而我们可以在游戏中设置路障(树木、山石等),让2点之间的路径减少,最终,在2点之间可...原创 2018-08-10 12:39:14 · 497 阅读 · 0 评论 -
比较排序和线性时间排序
你的打赏是我奋笔疾书的动力!说线性时间时间排序,我们的大脑可能已经猜想出该类排序的时间复杂度是O(n),所以叫做线性时间排序,不错!你的大脑满满的都是逻辑。然而,比较排序这个名词,你的大脑该如何灵光闪现呢?......好吧。比较排序:在排序最终结果中,元素之间的次序依赖于他们之间的比较,故称归并排序,快速排序,堆排序,插入排序为比较排序。比较排序可以抽象为一颗决策树。《算法导论》...原创 2018-07-27 20:50:37 · 1725 阅读 · 0 评论 -
回溯
你的打赏是我奋笔疾书的动力!按照我的惯例还是先把实例放出来撕咬一番。例1:n皇后问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线45度上的皇后都会自动攻击)。例如4皇后:说明:图展示了4个皇后依次选择列号放置的不考虑约束条件的所有可能(也叫搜索空间),节点代表皇后,有4层代表了有4个皇后,分支代表该皇后可选择放置的列号(1,2,3,...原创 2018-07-19 17:31:08 · 3178 阅读 · 0 评论 -
时间复杂度——大O记
时间复杂度是一个古老的话题,但是大家都知道它设计出来的目的是什么吗?可能心里嘀咕的并不是那么精准吧。有回答可能是衡量算法性能好坏的,这种粗糙的回答,用一句话“什么是好坏?”就能怼到娘胎;进一步答曰衡量算法执行快慢的,算是答到点上了,不过可以专业化一点,衡量执行时间的变化趋势(变化率),当输入规模n趋于大规模时,执行时间的变化趋势。例如O(n^2),O(n^3)在n趋于大规模时(一定能找到一个n0,...原创 2018-07-16 16:50:46 · 1135 阅读 · 0 评论 -
分治算法中的可优化点(三)
你的打赏是我奋笔疾书的动力! 这一节来聊一聊,老生常谈的2个优化。优化分治算法,单从降低时间复杂度的角度出发,也就是从分治算法的时间复杂度的递推公式出发,W(n)=aW(n/b)+d(n),有以下二种途径:途径一:降低a的数值,减少子问题的个数减少子问题数量的策略是有前提的,具体分析如下:若这个分治算法的时间复杂度递推式满足主定理的第一个结论的条件,那么...原创 2018-04-29 21:56:44 · 2785 阅读 · 0 评论 -
进一步认识分治算法(二)
你的打赏是我奋笔疾书的动力! 为了进一步了解和掌握分治算法,请各位看官,继续往下打量。主要涉及的问题有选择类问题(选第k小,选第二大,选最值等)、信号平滑处理问题(卷积应用,卷积计算,快速傅里叶FFT变换)、计算平面点集的凸包、二份查找、快速排序、二分归并排序。例1:选最大的数基本运算是比较蛮力算法:比较n-1次例2:同时选择最大和最小基本运算...原创 2018-04-29 21:43:01 · 963 阅读 · 0 评论 -
相识传说中的分治算法(一)
据不可靠分析,分治法深得大神们的垂爱,故,想凑近一点认识这个传说中的大法。按照惯例,先上点玄乎的理论晕死一片再说。基本思想:分解:将问题分解成若干个子问题。治理:递归地解决各子问题。不过若子问题的规模足够小,就以直接的方式(不再递归)解决子问题。合并:将子问题的解合并成原问题的一个解。借用一张要火的图,让我们把它看透:注意点:子问题和原问题的性质完全一样子问题之间彼此独立递归是分治策略的基...原创 2018-04-29 20:59:59 · 392 阅读 · 0 评论 -
红黑树伤感操作(下篇)
删除算法描述: 1. 找到删除的节点。 2. 如果该节点有2个孩子,则找到该节点的直接后继节点,并交换内容,继而删除后继节点,这时候后继节点要么是叶节点,要么只含有右子节点一个孩子,则会进入3,4两种情况加以考虑。 3. 如果该节点只含有一个孩子,就让孩子替换该节点。若该节点不可能是红色的(?红色的是第四种叶节点的情况);若该节点是黑色的则导致黑高度降1,则用仅...原创 2018-04-25 12:21:55 · 205 阅读 · 0 评论 -
红黑树的伤感操作(上篇)
叨序红黑树的一些性质网上比比皆是,但我想最难理解的应该是他的插入和删除,所以此博文就是记录一下学习红黑树的过程。废话少说,单刀直入,以免正面角色奋起反抗(电影里的坏人都是话多误事*_*)。插入算法描述:查找到插入的位置,然后插入,并标为红色,标为黑色也是可以的,但是可能会考虑诸多的情况需要分析,若你有充裕的时间可以去试试,但是为了我们的时间成本,还是标为红色,和先入的讲法为准。若插...原创 2018-04-25 12:12:54 · 158 阅读 · 0 评论 -
堆排序和其他排序算法的总结
目录堆的定义和性质优先级队列 插入删除并返回最大关键字的元素返回最大关键字的元素修改优先级创建堆堆排序和创建堆的时间复杂度分析 其他排序链式基数排序直接插入排序希尔排序排序简单总结没有写过排序算法总结的文章,不算真的程序员,因为排序算法是算法课程里基础的算法,还有如果你没有把基础的排序算法总结成文,那你脑袋里的排序算法可能真的只有选择...原创 2018-08-02 20:16:37 · 747 阅读 · 0 评论