复习进度

这几天把算法导论快速的过了一遍,当然只看了一些重点的东西,总结下,算法导论上有些章节很容易在笔试和面试中涉及到.

 

第4章的主定理,用于分析递归算法的时间复杂度非常有用。

第6章堆排和第7章快排重点在于分析时间复杂度,比如建堆的复杂度为O(n),快排的退化,背熟这两个算法很容易也很重要。

第8章线性排序主要针对数据值域范围不大的情况,不同于比较排序,利用数据值的信息来排序,可以达到O(n)。

第9章中位数统计,快排思想的运用,线性处理时间,经常会用到类似中位数统计的思想降低一个算法的复杂度至线性。比如,16.2-6,不需要先完整排序,而是如下处理(摘自算法导论教师手册)

 

Use a linear-time median algorithm to calculate the median m of the vi/wi ratios.

Next, partition the items into three sets: G = {i : vi/wi > m}, E =

{i : vi/wi = m}, and L = {i : vi/wi < m}; this step takes linear time. Compute

WG =

i∈G wi and WE =

i∈E wi , the total weight of the items in sets G and E,

respectively.

• If WG > W, then do not yet take any items in set G, and instead recurse on the

set of items G and knapsack capacity W.

• Otherwise (WG ≤ W), take all items in set G, and take as much of the items in

set E as will Þt in the remaining capacity W − WG.

• If WG + WE ≥ W (i.e., there is no capacity left after taking all the items in

set G and all the items in set E that Þt in the remaining capacity W −WG), then

we are done.

• Otherwise (WG + WE < W), then after taking all the items in sets G and E,

recurse on the set of items L and knapsack capacity W − WG − WE .

To analyze this algorithm, note that each recursive call takes linear time, exclusive

of the time for a recursive call that it may make. When there is a recursive call, there

is just one, and it’s for a problem of at most half the size. Thus, the running time is

given by the recurrence T (n) ≤ T (n/2) + (n), whose solution is T (n) = O(n)。

 

第11章HASH表,分析两种解决冲突方法和查找次数的期望分析。

第15章动态规划,第16章贪心算法,体会吧,多看些例子,关键是如何发现最优子结构。

第21章,带rank和路径压缩的并查集在很多题目中会遇到。

第22章之后几章图论中最基本和最重要的是DFS,BFS,后面的图的算法,面试好像不是经常会遇到,但最基本的必须知道,比如最短路径,最小生成树。

第31章数论一章,注意随机算法的分析,比如Miller-Rabin算法,利用费马定理的逆定理几乎成立的事实,并加上排除一类叫Cal。。的数,能够有效的判定一个数是不是素数。另外,数论中很多的结论要清楚,比如欧几里德算法,孙子定理等。

第32章字符串匹配,有RK算法,自动机算法,KMP算法,目前只弄清楚了KMP,其他的两个就算了- -

 

算法导论还要过一遍,重点是习题了,争取把上面提到的重点章节的题目再过一遍。

 

明天开始,开始复习编程之美,并思考扩展题目了(这才是最重要的),还要看下数据挖掘的算法。C++和C的技术细节可以稍微再缓一下。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值