随笔分类 -  算法

摘要:1.堆排序 要求:对于大顶堆,孩子节点的值小于父节点。 说明:数据会存储在数组中,从数组下标1开始存储根节点,假如i为父节点,则2*i是左孩子,2*i+1是右孩子。 方法:向上调整 步骤: 第一步:建堆,从有孩子节点p开始调整,将p的两个孩子节点较大者与父节点(p)交换,再调整交换过的以子节点为根的 阅读全文
posted @ 2019-11-18 13:47 suwenyuan 阅读(214) 评论(0) 推荐(0) 编辑
摘要:分治算法:是将问题划分为一些独立的子问题,递归的求解个子问题,然后合并子问题的解而得到原问题的解。 分治算法步骤 step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题; step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题 step3 合并:将 阅读全文
posted @ 2019-11-15 11:12 suwenyuan 阅读(198) 评论(0) 推荐(0) 编辑
摘要:贪心算法中,是以自顶向下的方式使用最优子结构,贪心算法会先做选择,在当时看起来是最优的选择,然后再求解一个结果的子问题。 贪心算法是使所做的选择看起来都是当前最佳的,期望通过所做的局部最优选择来产生一个全局最优解 如最小生成树、Dijkstra单源最短路径 贪心选择性质 所谓贪心选择性质是指所求问题 阅读全文
posted @ 2019-11-15 11:10 suwenyuan 阅读(295) 评论(0) 推荐(0) 编辑
摘要:动态规划:适用于子问题不是独立的情况,也就是各子问题包含子子问题,若用分治算法,则会做很多不必要的工作,重复的求解子问题,动态规划对每个子子问题,只求解一次将其结果保存在一张表中,从而避免重复计算。 动态规划最优化问题中的两个要素:最优子结构和重叠子问题 动态规划是以自底向上的方式来利用最优子结构, 阅读全文
posted @ 2019-11-15 09:53 suwenyuan 阅读(171) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示