随笔分类 -  算法

摘要:算法的本质是表达解决问题的逻辑; 计算的形式: 1、pipeline形式; 2、递归形式; 阅读全文
posted @ 2019-11-26 11:40 zzfx 阅读(1238) 评论(0) 推荐(0) 编辑
摘要:条件完备后执行后继计算: F = Future(context & P & r(F)) + Call(r(F) = F(input - 1)) Continuation是一种非常古老的程序结构,简单说来就是entire default future of a computation, 即对程序“接下 阅读全文
posted @ 2019-11-25 17:39 zzfx 阅读(440) 评论(0) 推荐(0) 编辑
摘要:所以结果的数据结构要优先设计。 一、算法与上下文 上下文是算法的运行环境。 上下文是一个状态气泡,算法的每一步都从这个气泡中存取信息。 上下文的设计是变量和数据结构的设计。 二、计算与上下文 计算要借助上下文,同时要维护上下文的一致性。 算法的每一步,每一个逻辑都有上下文。 三、上下文的分类: 1、 阅读全文
posted @ 2019-11-22 18:59 zzfx 阅读(262) 评论(0) 推荐(0) 编辑
摘要:分治与递归 1、问题的分解 2、问题的求解 3、解的合并 https://bigdata.oden.utexas.edu/project/divide-conquer-methods-for-big-data-analytics/ 普通分治:分治的各个层次的各解决方案不同; 递归分治:分治的各个层次 阅读全文
posted @ 2019-11-22 15:30 zzfx 阅读(789) 评论(0) 推荐(0) 编辑
摘要:递推没有“归”,只是往前进的过程,所以递推是递归的一个步骤; 递归有“递”也有“归”,既向前推进直到最底层,也会有返回的过程; 迭代概念更宽泛,是指一代一代的循环罔替的意思,没有明确一定存在最底层,也没有强调返回的过程; 递推,递归和迭代都是指具体的概念和方法,而回溯是指运用上面某种概念和方法的种思 阅读全文
posted @ 2019-11-21 22:34 zzfx 阅读(429) 评论(0) 推荐(0) 编辑
摘要:递归的起始端拥有更多的计算上下文; 计算上下文包含已知和未知的参量; 递归的末端具有更多的可计算性; 直接可计算性不包含未知参量。 递的过程是: 1、计算上下文的分解与最终可计算性的逼近; 2、将可计算性表述为待定值; 归的过程是: 1、执行直接可计算表达式; 2、赋值待定值,并执行计算; 3、返回 阅读全文
posted @ 2019-11-21 18:21 zzfx 阅读(219) 评论(0) 推荐(0) 编辑
摘要:算法是用逻辑语言描述的问题求解步骤 问题:需要经过逻辑推演的中间或结果要素。 自然语言 逻辑语言 算法。 阅读全文
posted @ 2019-09-09 10:43 zzfx 阅读(391) 评论(0) 推荐(0) 编辑
摘要:算法是问题解决步骤的描述,与具体语言无关 阅读全文
posted @ 2019-08-08 10:12 zzfx 阅读(271) 评论(0) 推荐(0) 编辑
摘要:1.分治法 关键词:递归(递归式)、大问题分解成子问题(子问题相互独立,且与原问题相同)、合并(子问题的解合并成原问题的解) 步骤: 1.分解。将原问题分解成一系列子问题。 2.求解。递归地求解各子问题。若子问题足够小,则直接求解。(递归式) 3.合并。将子问题的解合并成原问题的解 示例:归并排序; 阅读全文
posted @ 2019-02-18 11:02 zzfx 阅读(570) 评论(0) 推荐(0) 编辑
摘要:数据结构的表现形式即为变量;变量是算法的重要组成部分;算法的表现形式即为变量的维护; 算法中的变量分为几种:输入、输出和临时变量; 输入和输出是算法的基础变量;简单的算法只需要这两种变量就可以; 临时变量是算法中的辅助变量;其表现形式有三种: 1、上下文变量,用于保存算法状态切换时的上下文;这个在链 阅读全文
posted @ 2019-02-14 11:28 zzfx 阅读(296) 评论(0) 推荐(0) 编辑
摘要:八大算法:枚举、递推、递归、分治、贪心、试探法、动态迭代和模拟算法思想。 一、枚举算法思想(暴力算法) 将问题的所有可能答案一一列举,根据判断条件判断此答案是否合适,一般用循环实现。 经典运用:百钱买百鸡、填写运算符 二、递推算法思想 1.顺推法:从已知条件出发,逐步推算出要解决问题的方法。 2.逆 阅读全文
posted @ 2019-02-13 19:12 zzfx 阅读(2096) 评论(0) 推荐(0) 编辑
摘要:变量:输入数据、结果、辅助数据; 计算:逻辑步骤、遍历; 状态:当前的处理环节;上下文切换; 控制:遍历、递归、并发; 数据结构工具: 阅读全文
posted @ 2019-01-26 21:11 zzfx 阅读(377) 评论(0) 推荐(0) 编辑
摘要:大家应该都听说过等式‘算法+数据结构=程序’吧?这是Pascal设计者Niklaus Wirth的一本著作的书名,它刻画了过程式尤其是结构化编程的思想。后来Robert Kowalski进一步提出:算法=逻辑+控制。其中逻辑是算法的核心,控制主要用于改进算法的效率。在逻辑式编程中,程序员只需表达逻辑 阅读全文
posted @ 2018-12-27 19:35 zzfx 阅读(3460) 评论(0) 推荐(0) 编辑
摘要:常见的时间复杂度量级有: 常数阶O(1) 字典查找、数组索引 对数阶O(logN) 二分查找 线性阶O(n) 循环 线性对数阶O(nlogN) 循环+分而治之 平方阶O(n²) 双重循环 立方阶O(n³) 多重循环 K次方阶O(n^k) 指数阶(2^n) 常数阶O(1) 字典查找、数组索引 对数阶O 阅读全文
posted @ 2018-11-23 15:10 zzfx 阅读(575) 评论(0) 推荐(0) 编辑
摘要:有关字符串的匹配问题,有很好的算法,即KMP算法,但是还有一种其实经常使用到的算法是Rabin-Karp算法,它是使用hash的原理来进行字符串匹配的。具体的做法如下。 Rabin-Karp算法是由Rabin和Karp提出的一个在实际中有比较好应用的字符串匹配算法,此算法的预处理时间为O(m),但它 阅读全文
posted @ 2018-11-22 19:35 zzfx 阅读(669) 评论(0) 推荐(0) 编辑
摘要:算法一:快速排序算法 算法二:堆排序算法 算法三:归并排序 算法四:二分查找算法 算法五:BFPRT(线性查找算法) 算法六:DFS(深度优先搜索) 算法七:BFS(广度优先搜索) 算法八:Dijkstra算法 算法九:动态规划算法 算法十:朴素贝叶斯分类算法 算法一:快速排序算法 快速排序是由东尼 阅读全文
posted @ 2018-11-21 22:30 zzfx 阅读(147) 评论(0) 推荐(0) 编辑
摘要:前言:当您在读该文章的时候,我认为您已经知道HashMap的底层实现原理,如果您还不清楚HashMap是如何实现的,请先去了解,再回来看本文章。 1.HashMap什么时候扩容? HashMap的容量是有限的。当经过多次元素插入的时候,使得HashMap达到一定的饱和度,Key映射位置的几率不断变大 阅读全文
posted @ 2018-11-21 18:02 zzfx 阅读(399) 评论(0) 推荐(0) 编辑
摘要:平衡二叉树的平衡稳定是通过查找最低不平衡节递归实现的; 自平衡二叉树的平衡是通过局部不平衡的动态优化最终达到全局优化的。 阅读全文
posted @ 2018-11-16 19:15 zzfx 阅读(4276) 评论(0) 推荐(0) 编辑
摘要:字符串匹配是字符串的一种基本操作:给定一个长度为 M 的文本和一个长度为 N 的模式串,在文本中找到一个和该模式相符的子字符串,并返回该字字符串在文本中的位置。 KMP 算法,全称是 Knuth-Morris-Pratt 算法,以三个发明者命名,开头的那个K就是著名科学家 Donald Knuth 阅读全文
posted @ 2018-11-16 19:06 zzfx 阅读(438) 评论(0) 推荐(0) 编辑
摘要:因为红黑树需要进行左旋,右旋操作, 而单链表不需要,以下都是单链表与红黑树结构对比。如果元素小于8个,查询成本高,新增成本低如果元素大于8个,查询成本低,新增成本高 https://bbs.csdn.net/topics/392346931 阅读全文
posted @ 2018-11-16 18:55 zzfx 阅读(3885) 评论(0) 推荐(0) 编辑