
算法
Xefvan
这个作者很懒,什么都没留下…
展开
-
利用栈实现中缀表达式转前缀表达式
前面既然写了中缀转后缀的,那么现在说下中缀转前缀的,至于后缀(前缀)转中缀,可以根据相关的转换规则自行转换。目的将中缀表达式(即标准的表达式)转换为前缀表达式例如:1+2*3+(4*5+6)7 转换成 ++1*23+*4567 转换原则:与中缀转后缀不同,前者是顺序从左到右读取每一个字符,后者是从右到左顺序读取每一个字符,然后进行反转字符串。如果遇到操作数,直接将操作数放入到prefix 中如果原创 2017-02-06 12:13:02 · 12292 阅读 · 1 评论 -
字符串匹配算法 -- 暴力破解法(朴素法),RK算法,KMP算法
算法 预处理时间 匹配时间 朴素算法 0 O((n-m+1)m) Rabin-Karp Θ(m) O((n-m+1)m) KMP算法 Θ(m) Θ(n)术语前缀和后缀如果对某个字符串y∈∑*有x = wy, 则称字符串w是字符串x的前缀,记做 w ⊂ x。如果对某个字符串y∈∑*有x = yw, 则称字符串w是字符串x的后缀,记做 w ⊃ x。朴素字符串匹原创 2016-12-21 00:38:58 · 2580 阅读 · 0 评论 -
九大排序算法
九大排序算法 - 冒泡排序 - 插入排序 - 选择排序 - 快速排序 - 归并排序 - 堆排序 - 计数排序 - 基数排序 - 桶排序注: 1. 以下遍历中用到了swap()函数,进行两个数的交换 2. 其中的伪代码参考自《算法导论第三版》冒泡排序冒泡排序是一种简单的排序算法。它重复地“走访”要排序的数列,一次比较两个元素,如果他们的顺序错误就进行交换。时间复杂度:O(n^2)原创 2016-10-20 23:33:14 · 519 阅读 · 0 评论 -
利用栈实现中缀表达式转后缀表达式
简介中缀表示法(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4)。与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被电脑解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。逆波兰表示法(Reverse Polish notation,RPN,或逆波兰记法),是一种是由波兰数学家扬·武卡谢维奇1920年引入的数转载 2017-01-23 22:11:44 · 1056 阅读 · 0 评论 -
动态规划学习(一)
简述分治方法将问题划分为互不相交的子问题,递归地求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题。对于分治方法,在处理问题的时候,会反复求解那些公共子子问题。而动态规划算法对每个子子问题只求解一次,将其保存在一个表格中,从而无需每次求解一个子子问题,避免了这种不必要的计算工作。通俗来讲:就是你去考研,需要考政治,英语,数学和原创 2017-03-20 23:05:18 · 375 阅读 · 0 评论 -
分治策略学习(二)
如果对分治策略不懂的可以先看下这个:分治策略学习(一)回顾一下分治策略的三步骤: 1. 分解步骤:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。 2. 解决步骤:递归求解出子问题。如果子问题的规模足够小,则停止递归,直接求解。 3. 合并步骤:将子问题的解组合成原问题的解。当子问题足够大,需要递归求解时,我们称之为递归情况。当子问题变得足够小,不再需要递归时,我们说递归已经“原创 2017-03-28 14:45:03 · 541 阅读 · 0 评论 -
分治策略学习(一)
前言分治策略作为算法中的一个基础策略之一(例如还有动态规划,贪心算法,摊还分析等等),是我们进入算法世界的第一扇门,所以学的好与坏,也关系到将来。这里为了让我更好的学习分治策略,特意写了这几篇,以此提高自己对分治策略的理解。原创 2017-03-09 23:07:39 · 881 阅读 · 0 评论