算法与设计
文章平均质量分 87
浮点老韦
分享自己多年的开发经验,不断自我提升,学无止境
展开
-
堆排序算法----一种构建完全二叉树进行排序的算法
目录堆排序算法堆排序思想构建初始堆调整新堆代码设计总结疫情之后复工复产,工作又开始忙起来了,加上自己在研究数学公式可视化编辑,比较费神费力,最近文章就写比较少了,但是不能一直停下来,既然已经开始,就有始有终,刚好最近使用堆排序算法,于是今天决定把堆排序算法记录下来。对于个元素的序列,当且仅当满足下面关系时称其为堆。 或 其中,和应该小于等于。如果将此序列对应的一维数组,即以一维数组作为序列的存储结构,看成一个完成二叉树,则完全二叉树中所有非根结点的值都不小于(或者大于)其左右子结点的值。原创 2022-06-19 15:47:07 · 586 阅读 · 0 评论 -
【动态规划案例】详细介绍投资问题
现有万元资金,个项目投资,假设:为分配给第i个项目的资金;为第i个项目投资得到的收益(万元)。问:如何投资使得总效益最大?根据动态规划的一般性步骤,首先建立目标函数和约束条件,根据上面假设得到:目标函数:;约束条件:;假设为万元钱投资给前个项目获得的最大收益,用动态规划思路求解,问题就转成求。当时,也就是说只投一个项目时最大收益为:;当时,即至少投资两个项目以上时,设()为分配给第个项目的资金,此时还剩下的资金可分配给前个项目,则获得的最大收益为:根据上面的分析,可以得到转移方程:以上得到的转移方程分析比较原创 2022-06-05 22:37:28 · 3107 阅读 · 0 评论 -
【动态规划案例】彻底搞明白最长公共子序列LCS
我们在写论文或者文章的时候,是否被判定为抄袭,其思想就是使用求最长公共子序列方法查找两篇文章相似度高不高。子序列是指某个序列中任意地去掉若干个不一定连续的元素后形成的序列。如果一个元素也不去掉,其本身也是它的一个子序列。设序列X,Y:如果存在X的元素构成的严格递增序列,使得则Y是X的一个子序列。例如BDAB、ABCBDAB是ABCBDAB的一个子序列。如果存在Z同时是X和Y的子序列,则称Z是X和Y的公共子序列。子序列的长度则是指子序列的元素个数。最长公共子序列问题就是在给定的和序列中,求出这两个序列的最长公原创 2022-06-01 12:36:15 · 491 阅读 · 0 评论 -
掌握了排序算法的稳定性,对排序算法学习将会事半功倍
稳定性是在一组未排序的序列中,如果存在两个相等的元素A和B,且在未排序序列中,A在B前面位置,如果在排序结束之后,A、B的位置没有发生变化,也就是说A仍然在B的前面,那么就称该排序算法是稳定的。原创 2022-05-21 16:11:54 · 223 阅读 · 0 评论 -
用二叉树描述二分算法,一种直观易记思路
二分查找法也叫折半查找算法,在一个有序序列R[1,...,n]中,将待查元素(Key)的值和序列的中间位置(标记为mid)的值进行比较,如果相等,则查找成功;如果Key>R[mid].key,说明待查元素的值在R[mid+1,..,n]后半区间内,那么只需要在后半区间查找就可以了;如果Key<R[mid].key,说明待查找元素的值在R[0,mid-1]前半区间内,那么只需要在前半区间插件即可,这样逐步缩小查找范围,直到查找成功或者区间为空时失败为止。如何用二叉树描述?假设有一个非重原创 2022-05-20 02:00:12 · 821 阅读 · 0 评论