算法
文章平均质量分 70
算法的笔记
「已注销」
这个作者很懒,什么都没留下…
展开
-
算法-回溯
文章目录回溯1. 迷宫回溯问题2. 八皇后问题3. 马踏棋盘问题 回溯 回溯法的基本思想:回溯法在包含问题的所有可能解的解空间树中,从根结点出发,按照深度优先的策略进行搜索,对于解空间树的某个结点,如果该结点满足问题的约束条件,则进入该子树继续进行搜索,否则将以该结点为根结点的子树进行剪枝。 回溯法的算法框架按照问题的解空间一般分为子集树算法框架与排列树算法框架。 当给定的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间树称为子集树。 当给定的问题是确定 n 个元素满足某种性质的排列原创 2021-07-13 11:51:33 · 271 阅读 · 0 评论 -
算法-分治
文章目录分治汉诺塔问题 分治 分治法的基本思想:分治法将一个难以直接解决的大问题分解成一些规模较小的子问题,分别解决各个子问题,再合并子问题的解得到原问题的解。 汉诺塔问题 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B原创 2021-07-13 11:52:27 · 64 阅读 · 0 评论 -
算法-动态规划
文章目录动态规划背包问题 动态规划 动态规划法的求解过程: 划分子问题:将原问题分解为若干个子问题,每个子问题对应一个决策阶段,并且子问题之间具有重叠关系。 确定动态规划函数:根据子问题之间的重叠关系找到子问题满足的递推关系式(即动态规划函数),这是动态规划法的关键。 填写表格:设计表格,以自底向上的方式计算各个子问题的解并填表,实现动态规划过程。 动态规划算法的基本要素为最优子结构性质与子问题重叠性质。 当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质,也称此问题满足最优性原理。原创 2021-07-13 12:36:37 · 79 阅读 · 0 评论 -
算法-贪心
文章目录贪心活动安排问题 贪心 能采用贪心算法求最优解的问题,一般具有的重要性质为:最优子结构性质与贪心选择性质。 贪心选择性质是指问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来得到,这是贪心法和动态规划法的主要区别。 贪心法的求解过程: 把求解的问题分成若干个子问题 对每个子问题求解,得到子问题的局部最优解 把子问题的解局部最优解合成原来解问题的一个解 虽然贪心法每一步都能获得局部最优解,但由此产生的全局解有时不一定是最优的。 活动安排问题 设有n个活动的集合E={1,2,..,n}E=\原创 2021-07-13 12:37:59 · 300 阅读 · 0 评论 -
算法-排序
文章目录排序简介1. 冒泡排序2. 插入排序3. 选择排序4. 希尔排序5. 堆排序6. 快速排序7. 归并排序8. 基数排序 排序简介 排序算法的稳定性:排序前两个相等数的前后位置顺序和排序后它们两个的前后位置顺序相同。 内部排序:将需要处理的数据都加载到内存中进行排序。 快、希、选、堆不稳定(“快些选一堆”) 插入、选择、交换、归并、基数… 外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。 排序方法 平均时间 最坏时间 空间 稳定性 冒泡排序 O(n2)O(n^原创 2021-07-13 12:40:07 · 59 阅读 · 0 评论 -
算法-查找
文章目录查找1. 二分查找2. 插值查找3. 斐波那契查找 查找 1. 二分查找 二分查找(折半查找)必须采用顺序存储结构,并且必须按关键字大小有序排列。 二分查找求mid公式: mid=low+high2=low+high−low+low2=low+12⋅(high−low) mid=\frac{low+high}{2}=\frac{low+high-low+low}{2}=low+\frac{1}{2}\cdot(high-low) mid=2low+high=2low+high−low+low=l原创 2021-07-13 12:43:24 · 50 阅读 · 0 评论 -
算法-数论算法
文章目录1. 最大公约数2. 最小公倍数3. 模取幂 1. 最大公约数 欧几里得算法(辗转相除法)求最大公约数(Greatest Common Divisor,GCD)的递归定理:对任意非负整数a和任意正整数b gcd(a,b)=gcd(b,a mod b) gcd(a,b)=gcd(b,a \ mod \ b) gcd(a,b)=gcd(b,a mod b) 欧几里得算法递归实现: // 欧几里得算法递归实现 public static int gcd(int a,原创 2021-07-13 12:44:32 · 73 阅读 · 0 评论 -
算法-字符串匹配
KMP KMP算法使主串指针不回溯,只有模式串指针回溯,因此比朴素匹配效率高。 // 懂得KMP匹配原理和next数组,可以手工KMP匹配,但对代码还不太理解 public class KnuthMorrisPratt { public static int[] getNext(String pattern) { int k = -1; int j = 0; int[] next = new int[pattern.length()];原创 2021-07-13 12:45:20 · 40 阅读 · 0 评论