随笔分类 -  算法设计与分析

从数据结构, 和 算法设计与分析 这两门课开始写起,说一下自己的理解
摘要:题目要求: 编写程序,对任意输入的若干个不相同的整数,输出其第k大的数 解析: 我们采用分治法解决这道题。 把这些数放在一个数组中,用分治法的话,我们可以想到,怎样分治? 把一个数组分成若干个大小相等的子数组,然后在这些子数组中取中位数,再取这些==中位数的中位数==,用这个数就可以把数组划分为一个 阅读全文
posted @ 2020-05-20 22:17 HIIM 阅读(807) 评论(0) 推荐(0)
摘要:数字三角形 有正实数构成的数字三角形排列形式如图所示,第一行的数为$a_{11}$;第二行的数从左到右依次为$a_{21}$,$a_{22}$;...第n行的数为$a_{n1}$,$a_{n2}$,...,$a_{nn}$。从$a_{11}$开始,每一行的数$a_{ij}$只有两条边可以分别通向下一 阅读全文
posted @ 2020-04-17 22:16 HIIM 阅读(871) 评论(0) 推荐(0)
摘要:"1.1具体实例" "1.2子问题的划分和递推方程" "2.动态规划算法的递归实现" "3.动态规划算法的迭代实现" "4.动态规划算法的要素" 这里用 矩阵链的乘法问题 来说明动态规划算法的设计要素。 $A_1,A_2,..,A_n$表示$n$个矩阵的序列,其中$A_i$为$P_{i 1} \ti 阅读全文
posted @ 2020-04-03 11:18 HIIM 阅读(2631) 评论(1) 推荐(1)
摘要:选择问题最常见的问题有: "1.1选最大" "1.2同时选最大和最小的算法" "1.3找第二大" "2选第k小(分治策略)" 1.1选最大 选择算法 统一描述:设L是n个算法的集合,从L中选出第k小的元素,11.2同时选最大和最小的算法 设计思想:先选最大,然后把最大的从L中删除,接着选最小。 == 阅读全文
posted @ 2020-03-29 15:18 HIIM 阅读(1726) 评论(0) 推荐(0)
摘要:快速排序算法 基本思想:被排序数组为A,用数组首元素作为标准将A分成前后两部分,比首元素小的元素构成数组的前部分,比首元素大的部分构成数组的后部分。这两部分构成两个新的子问题,算法接着对这两个数组进行递归。 Quicksort(A,p,r) //p,r分别为数组A的首元素和尾元素的下标 输入:数组A 阅读全文
posted @ 2020-03-26 22:59 HIIM 阅读(813) 评论(0) 推荐(0)
摘要:主定理的作用:求解递推方程。使用主定理,就可以不用迭代法。 条件:得判断是否满足3个条件中的一个。 T(n)=aT(n/b)+f(n) n:解的规模 a:子问题的个数 n/b:归约后子问题的规模 f(n):除了子问题,要求解另外增加的计算代价,不参加递归。 定理:设a>=1,b>=1,为常数,f(n 阅读全文
posted @ 2020-03-15 18:53 HIIM 阅读(3358) 评论(2) 推荐(0)