![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法的数学原理
文章平均质量分 87
杉影
这个作者很懒,什么都没留下…
展开
-
快速选择的平均时间复杂度
快速选择的平均时间复杂度以快速排序算法的思路,在含有N个元素的无序列表中找到第k小元素的平均时间复杂度快速选择选择枢纽元,将原无序列表分为两组:小于枢纽元的在S1S_1S1组;大于枢纽元的在S2S_2S2组(假设无序列表中不存在重复元素)。令∣S1∣|S_1|∣S1∣为S1S_1S1中元素个数当k<∣S1∣k<|S_1|k<∣S1∣时,第k小元素位于S1S_1S1组中,对S1S_1S1组递归执行快速选择若k=∣S1∣+1k=|S_1|+1k=∣S1∣+1,此时第原创 2021-06-01 22:28:56 · 1299 阅读 · 0 评论 -
左式堆分析
左式堆在右路径上有r个节点的左式堆必然至少有2r−12^r-12r−1个节点右路径是从根节点开始,一直往右儿子遍历经过的所有节点(即右儿子的右儿子的右儿子······构成的路径)。如图1所示,右路径为3,8使用数学归纳法证明此定理当r=1r=1r=1时此时根节点的右子树为空,npl(right)=−1npl(right) = -1npl(right)=−1,依据左式堆的性质,npl(left)≥npl(right)npl(left)\geq npl(right)npl(left)≥npl(r原创 2021-05-29 14:37:10 · 369 阅读 · 0 评论 -
完美散列·当完美散列的冲突概率小于1/2时,二级散列表的大小的期望值
完美散列·当完美散列的冲突概率小于1/2时,二级散列表的大小的期望值**问题:**将N个元素放入两级散列表中,其中主散列表大小为N,当冲突概率小于1/2时,二级散列表的大小的期望值是多少?欲计算完美散列中二级散列表的大小的期望值,我们需要先求解在普通散列表(即仅有一张表的散列表)中,当冲突概率小于1/2时,该散列表的大小在普通散列表中,当冲突概率小于1/2时,该散列表的大小设普通散列表的大小为M,需要放入该散列表的元素个数为N原问题可转换为:将N个球放入M个盒中,M为多少时,可以使得多个球放入同一原创 2021-05-21 23:13:53 · 219 阅读 · 0 评论 -
最短编辑距离·动态规划
最短编辑距离·动态规划有字符串An="a1a2a3...an",Bm="b1b2b3...bm"A_n="a_1 a_2 a_3...a_n",B_m="b_1 b_2 b_3...b_m"An="a1a2a3...an",Bm="b1b2b3...bm",通过插入字符、删除字符、替换字符三种操作将两字符串变成相同字符串,最少需要几步操作设D[An][Bm]D[A_n][B_m]D[An][Bm]为两字符串的最短编辑距离,di[An][Bm]d_i[A_n][B_m]di[An原创 2021-05-14 15:00:06 · 115 阅读 · 0 评论 -
平衡二叉树的单旋转与双旋转
平衡二叉树的单旋转与双旋转平衡二叉树的插入后失衡情景对一个平衡二叉树插入新数据导致二叉树失衡时,可以找到所有失衡节点中高度最小的节点,令该节点为k,我们可以发现,新插入的数据与k节点的关系不外乎如下四种情况:新数据插入了k的左儿子的左子树新数据插入了k的左儿子的右子树新数据插入了k的右儿子的左子树新数据插入了k的右儿子的右子树其中1‾\underline 11和4‾\underline 44是关于k节点的镜像对称,它们都位于树的“外边”(左-左;右-右)另外2‾\underline原创 2021-05-12 23:20:48 · 423 阅读 · 0 评论 -
最大子序列和·动态规划分析
最大子序列和·动态规划分析题目给定序列{A1,A2,A3,...,AN}\{A_1,A_2,A_3,...,A_N\}{A1,A2,A3,...,AN},求该序列的最大子序列和对应的序列分析以下将最大子序列和对应的序列简称为最大子序列设D[N]是序列的最大子序列,设d[N]是序列中必须含有ANA_NAN并以ANA_NAN结尾的最大子序列例:{-1,3,4,-2,7,-20}。D[4]={3, 4},d[4]={3,4,-2}由D[N]是否含有ANA_NAN可得{D[N]=d[N原创 2021-05-11 16:40:29 · 165 阅读 · 1 评论 -
二叉查找树的平均深度
二叉查找树的平均深度设一棵树总共有N个节点,其根节点的左子树有i个节点,则根节点的右子树有N-i-1个节点设D(N)为该树的内部路径长(即所有节点的深度之和),那么其根节点的左子树内部路径长为D(i);其根节点的右子树内部路径长为D(N-i-1)当左子树连接到根节点时,左子树内的每个节点的深度都将加一,同理,右子树亦是如此。所以左右子树连接到根节点时深度总共增加N-1∴D(N)=D(i)+D(N−i−1)+N−1\therefore D(N)=D(i)+D(N-i-1)+N-1∴D(N)=D(i原创 2021-05-10 15:29:38 · 1515 阅读 · 3 评论 -
欧几里德算法(辗转相除法)
欧几里德算法(辗转相除法)简介欧几里得算法是用来求两个正整数最大公约数的算法,算法将除数和余数反复做除法运算,当余数为0时,当前算式的除数为最大公约数。例子求50和15的最大公约数 gcd(50,15)50÷15=3(余5)50\div15=3(余5)50÷15=3(余5)以(1)的除数作为新的被除数,以(1)的余数作为新的除数15÷5=3(余0)15\div5=3(余0)15÷5=3(余0)在(2)中,余数为0,所以gcd(50,15)=5分析求gcd(a, b)(方便起见,假原创 2021-05-10 00:24:36 · 561 阅读 · 0 评论 -
最大子序列和问题·联机算法
最大子序列和问题·联机算法题目给定(可能有负的)整数A1,A2,...,ANA_1, A_2, ..., A_NA1,A2,...,AN,求∑k=1nAk\sum_{k=1}^n A_k∑k=1nAk的最大值。(为方便起见,如果所有整数均为负数,则最大子序列和为0)易知若AiA_iAi<0,则AiA_iAi不可能为最大子序列和的起点。(因为总能通过Ai+1A_{i+1}Ai+1作起点优化最大子序列)设序列其各项和为Aij,其各项和为∑k=ijAk=Ai+Ai+1+...+A原创 2021-05-08 23:45:27 · 254 阅读 · 0 评论