算法分析与设计
李春春_
精通Java软件开发、SQL数据库、Linux底层操作系统原理,有扎实的计算机软件基础,掌握数据挖掘常用算法,能够进行网站后台开发和维护、web系统设计与实现、推荐算法建模与大数据分析。爱好逻辑推理、运动和旅游;性格开朗,有较强的组织与协调能力;有很好的团队合作精神和责任心;兴趣广泛,善于接受新事物,能快速适应新的环境。
展开
-
最大间隙问题
最大间隙问题:给定 n 个实数x1,x2,…,xn,求这 n 个数在实轴上相邻 2 个数之间的最大差值。假设对任何实数的下取整函数耗时 O(1),设计解最大间隙问题的线性时间算法。原创 2015-03-27 23:57:31 · 4084 阅读 · 0 评论 -
摊还分析
在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价。注意,摊还分析不同于上一篇博客中的平均情况分析,它并不涉及不同输入出现的概率,可以保证最坏情况下每个操作的平均性能。这样,就可以说明一个操作的平均代价是很低的,即使序列中某个单一操作的代价很高。 但首先要强调一点就是,摊还分析中赋予对象的信用或者费用,仅仅是用来分析而已,不需要也不应该出现在程序中。 我们以栈操作作为示例讲解摊还分析三种方法,然后以数据结构中动态表插入n个元素来示范如何应用摊还分析的方法。原创 2015-03-23 13:59:49 · 5788 阅读 · 1 评论 -
插入排序、归并排序和递归算法的复杂性分析
算法的复杂性分析,说白了也就是关于计算机程序的性能和算法所用计算机资源的理论分析。通常包括时间复杂性T(n)和空间复杂性S(n),其中n是问题的输入规模。一般来说算法需要的时间与输入的规模同步增长,所以通常把一个程序的运行时间描述成输入规模的函数。 对许多问题,比如排序或计算离散傅里叶变换最自然的量度是输入中的项数,例如带排序数组的规模n。对许多其他问题,比如两个整数相乘,输入规模的最佳量度是用通常的二进制记号表示输入所需的总位数。原创 2015-03-20 13:07:08 · 9814 阅读 · 4 评论 -
递归与分治策略(1)
算法整体思想对k个子问题分别求解,如果子问题的规模仍然不够小,则再划分为k个子问题。如此递归地进行下去,直到问题规模足够小,很容易求出其解为止。将求出的小规模问题的解合并成一个更大规模的问题的解,自底向上逐步求出原来问题的解。分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。原创 2015-04-06 14:30:08 · 5990 阅读 · 0 评论 -
递归与分治策略(2)
分治法所能解决的问题一般具有以下几个特征:(1)该问题的规模缩小到一定程度就可以容易地解决。(2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。(3)利用该问题分解出的子问题的解可以合并为该问题的解。(4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。原创 2015-05-04 21:37:45 · 884 阅读 · 0 评论