声明:本系列为趣学算法一书学习总结内容,在此推荐大家看这本算法书籍作为算法入门,
原作者博客链接,本书暂无免费电子版资源,请大家支持正版
本书内容按照算法策略分为7章。
- 第1章从算法之美、简单小问题、趣味故事引入算法概念、时间复杂度、空间复杂度的概念和计算方法,以及算法设计的爆炸性增量问题,使读者体验算法的奥妙。
- 第2~7章介绍经典算法的设计策略、实战演练、算法分析及优化拓展,分别讲解贪心算法、分治算法、动态规划、回溯法、分支限界法、线性规划和网络流。每一种算法都有4~10个实例,共50个大型实例,包括经典的构造实例和实际应用实例,按照问题分析、算法设计、完美图解、伪代码详解、实战演练、算法解析及优化拓展的流程,讲解清楚且通俗易懂。附录介绍常见的数据结构及算法改进用到的相关知识,包括sort函数、优先队列、邻接表、并查集、四边不等式、排列树、贝尔曼规则、增广路复杂性计算、最大流最小割定理等内容。
书籍从大量的趣味故事以及图像展示,向读者生动的的分析和描述了算法问题的分析过程,一图胜千言,图像联合记忆的效果也远比文字讲解效果出众,并且配有专门的答疑QQ群交流,博客内容记录分析,值得推荐。
以下内容在原作基础上进行了删减或者自我理解加工,详细内容请查看原作书籍。
瑞士著名的科学家 N.Wirth 教授曾提出: 数据结构+算法=程序。
数据结构是程序的骨架,算法是程序的灵魂。
- 什么是算法?
算法是为解决一个特定的问题而精心设计的一套数学模型以及在这套数学模型上的一系列操作步骤,这些操作步骤将问题描述的输入数据逐步处理、转换,并最后得到一个确定的结果。-出自《算法的乐趣》-王晓东
以下内容也有出自此书籍中的总结,由于篇幅零散在此提前说明。
- 算法具有以下特性。
- 有穷性:算法是由若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止。
- 确定性:每条语句有确定的含义,无歧义。
- 可行性:算法在当前环境条件下可以通过有限次运算实现。
- 输入输出:有零个或多个输入,一个或多个输出。
最好、最坏和平均情况分别求算法渐近复杂度,但我们考查一个算法通常考查最坏的情况,而不是考查最好的情况,最坏情况对衡量算法的好坏具有实际的意义。
О(1)<О(logn)<О(n)<О(nlogn) <О(n)<О(n)<О(2) <О(n!)<О(n)
算法占用的空间大小。一般将算法的辅助空间作为衡量空间复杂度的标准。空间复杂度的本意是指算法在运行过程中占用了多少存储空间。算法占用的存储空间
包括:
算法学习瓶颈
很多人感叹:算法为什么这么难。算法作为一门学问,有两条几乎平行的线索。一个是数据结构(数据对象):数、
矩阵、集合、串、排列、图、表达式、分布等。另一个是算法策略:贪心、分治、动态规
划、线性规划、搜索等。
传统的算法书大多注重
内容的收录,但却忽视思维过程的展示,因此我们学习了经典的算法,却费解于算法设计
的过程。