![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构的积累
用于积累算法编写经验与经典算法
韩运畅
这个作者很懒,什么都没留下…
展开
-
拓扑排序的证明
反证法首先,按照拓扑排序的规则失败了,即有A: { …->Ak } 对于剩下的节点B: {a,b,c,d…}无法被链到后面了假设这串节点是可以成功排序的,排序结果记为Y{…}那么Y中最早出现的集合B中的的节点记为node,我们可以确定node前面的所有节点一定都是在集合A里面的,那么我们可以发现这个节点是可以排在Ak后面的,矛盾!证毕...原创 2020-11-29 19:19:38 · 372 阅读 · 0 评论 -
红黑树规则及证明
4条规则1. 节点颜色非黑即红2. 根节点为黑3. 父子节点不能都为红4. 根节点到所有空节点的黑节点个数相同证明首先递归证明,黑高为H的树至少有2^H-1个节点。于是有对于N个节点的树,其黑高最多为log(2,N)。然后根据性质3证明,一个黑高为H的红黑树,其真实高度最多为2H。于是,于是有对于N个节点的树,其黑高最多为log(2,N),其高度最多为2log(2,N)...原创 2020-11-21 08:37:18 · 549 阅读 · 0 评论 -
关于弗洛伊德算法的理解
Floyd算法三次循环用于构建图上各个点之间的最短路径 for (int k = 0; k < n; k++) for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) a[i][j] = Math.min(a[i][j], a[i][k] + a[k][j]);dp方程dp[k][i][j] = min(dp[k-1][i][k],dp[k-1原创 2020-10-31 16:58:20 · 684 阅读 · 0 评论 -
辗转相除法求最大公约数
//保证detaX>=0,detaY>=0//注意前面是先判断detaY==0,后面就是detaX%detaY的形式,否则就是先判断detaX==0,后面跟detaY%detaX的形式 private int getGY(int detaX, int detaY) { return detaY==0?detaX:getGY(detaY,detaX%detaY); }...原创 2020-05-25 08:03:29 · 241 阅读 · 0 评论 -
KMP算法及实现
//kmp算法 //算法思路,先整理待匹配的字符串s,next[index]=j,意思是,从j-1往前走的字符串s1==从index往前走同样长度的字符串s2 // 整理next[]的时间复杂度为O(n),s[index+1]的匹配长度要么等于s[index]+1,要么等于s[index]-k1*m1-k2*m2... // 证明思路便是考虑s[index+1]的匹配长度基于s[index]及对其的操作,然后累加可至s[s.length-1]的匹配...原创 2020-05-20 12:06:25 · 195 阅读 · 0 评论 -
牛顿迭代法求平方根
⚠️代码写的有问题,while 循环应该是大于号 -2020.11.1原创 2020-05-07 07:15:42 · 82 阅读 · 0 评论