随笔分类 -  算法笔记

摘要:快速排序 -利用分治策略 -在原地排序 -经过调整后很实用 算法分析 最坏情况 1.数据已经排好序或者逆序 2.每个分划的一边都没有元素 此时递归式为:T(n) = T(0) + T(n-1) + θ(n) = T(n-1) + Θ(n) = Θ(n2) 最优情况 最好的情况分划为 n/2 : n/ 阅读全文
posted @ 2018-03-28 19:28 乐高先生 阅读(137) 评论(0) 推荐(0)
摘要:乘方问题 输入一个实数x,一个整数n >= 0,计算xn。 朴素算法即时对n个x连乘。 分治法: xn = xn/2 · xn/2 如果n为偶数 xn = x(n-1)/2 · x(n+1)/2 如果n为奇数 T(n) = T(n/2) + θ(1) = θ(lg n) Bottom-up algo 阅读全文
posted @ 2018-03-26 23:36 乐高先生 阅读(245) 评论(0) 推荐(0)
摘要:Asymptotic analysis(渐近分析) 1. Ignore machine-dependent constants. 2. Look at the growth of the running time. 解递归式的方法: substitution method(代换法) 1. 猜测有某个 阅读全文
posted @ 2018-03-20 22:49 乐高先生 阅读(150) 评论(0) 推荐(0)
摘要:霍纳规则用来简化朴素多项式的求值。它将一元n次多项式的求值问题转化为n个一次式。 霍纳规则是采用最少的乘法运算策略,求多项式A(x) = anxn+ an-1xn-1+...+ a1x + a0在x0处的值,该规则是A(x0)=(...((anx0+ an-1)x0+...+ a1)x0+ a0) 阅读全文
posted @ 2018-03-07 20:25 乐高先生 阅读(532) 评论(0) 推荐(0)
摘要:问题:请给出一个运行时间为O(n lgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时, 判断S中是否存在有两个其和等于x的元素。 题目思路:先将集合S用归并排序排好序,因为归并排序的运行时间为O(n lgn);设置low和 high两个标志指向集合的两端,将两个点相加与x比较,如 阅读全文
posted @ 2018-03-07 19:44 乐高先生 阅读(190) 评论(0) 推荐(0)
摘要:合并排序算法依照分治模式,直观地操作如下: 分解:将n个元素分成各含n/2个元素的子序列; 解决:用合并排序法对两个子序列递归地排序; 合并:合并两个已排序的子序列以得到排序结果。 以下给出递归形式的T(n)即最坏情况下合并排序n个数的运行时间。当n>1时,将运行时间如下分解: 分解:这一步仅仅是计 阅读全文
posted @ 2018-03-07 18:15 乐高先生 阅读(484) 评论(0) 推荐(0)