作者:disappearedgod
时间:2014-4-13
An Algorithm must be seen to be belived. Donald Knuth
前言
其一:
作为即将入职的学生,大家一般都在抓瞎的看东西。本人纯属小白,而找工作也非吾所愿。但是,为了今后有回旋余地,还是要跟读一些博客。跟踪“结构之法,算法之道”的博客,写一些对应题目的自我感受而已。
其二:
要感谢实验室的师兄师姐的帮助,有些内容是他们无私分享。
其三:
红色为可点击项。
目录
一、综合题目(笔试相关)
二、算法及排序
算法分析:指对一个算法所需要的资源进行预测。在分析一个算法之前,要简历有关实现技术的模型,包括描述所用资源的及代价的模型。
2.1 初级算法及排序
2.1.1 分治法
将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后在合并其结果,就得到原问题的解。
2.1.2 函数的增长
这一内容涉及到《算法导论》第二章后半部分以及第三章内容。主要说明了4中方法的异同。一般的,Θ用来涵盖函数f(n),er O函数用确定函数f(n)的上界。Knuth提出用Ω和θ来描述上界和下届。Knuth, D. E. (1976). Big omicron and big omega and big theta. ACM Sigact News, 8(2), 18-24.
2.1.3 递归式
三种解递归式方法。
找出解的简介“θ”或“O”界的方法。
- 代换法(substitution method):先猜有某个界存在,然后再用数学归纳法证明该猜测的正确性。
- 递归树方法(recursion-tree method):将递归式转换成树形结构,树中的节点代表在不同递归层次付出的代价。最后,利用对和式限界的结束来接触递归式。
- 主方法(master method):给出递归公司的界 T(n)=aT(n/b)+f(n),其中,a>=1,b>1,f(n)是给定的函数;这种方法要记忆三种情况。
2.1.4排序
排序问题
- 输入:n个数的序列<a1,a2,...,an>
- 输出:输入序列的一个重排<a1',a2',...,an'>,使得a1'<=a2'<=...<=an'
- 输入序列通常是一个n元数组,但也可能由其他形式来表示,如链表。
研究排序算法原因:
- 程序本事需要对信息进行排序。
- 算法通常把排序作为关键子程序。
- 排序时一个我们可以证明其非平凡下界的问题。我们的最佳上界能够与这个非平凡下界渐进地相等,这就意味着我们的排序算法是渐进最优的。
排序算法归类
--比较排序算法
----插入排序
----归并排序
----堆排序
----快速排序
----决策树模型证明(最坏情况的运行时间的下界为Ω(nlogn))
--非比较排序算法
----基数排序
排序【链表版】
2.1.5 中文所述和顺序统计学
2.2 高级设计和分析技术
2.2.1 动态规划
2.2.2 贪心算法
2.2.3 平摊分析
三、数据结构(面试所考)
3.1 基本数据结构(线性数据结构)
3.2 散列表
- 直接寻址表
- 散列表
- 散列函数
- 开饭寻址法
- 完全散列
3.3 二叉查找树
3.4 红黑树
3.5 数据结构的扩张
3.6 高级数据结构
3.6.1 B树
3.6.2 二项堆
3.6.3 斐波那契堆
3.6.4 用于不相交集合的数据结构
3.7 图
3.7.1 图的基本算法
3.7.1 最小生成树
3.7.2 最短路径
3.7.3 最大流
四、数据挖掘 机器学习算
五、数据处理
六、工具探究
七、开源薄见
八、参考文献
1.《算法导论》
2.《算法》第四版
后记:
更新列表
更新内容 | 更新时间 |
目录 | 2014/4/13 |
分治法 | 2014/4/13 |
堆排序 | 2014/4/14 |