算法导论第一,第二部分总结
2017-01-23 19:51
197 查看
最近正在看一部大著《算法导论》,这本书无论从严密还是从思维上面都达到了一个难以企及的高度。里面的算法分析与设计基本上都在理论性上,如果想实用的话自己还需要看点其它的东西。接下来,就自己学了的前两章做一个总结。
第一章:算法在计算中的作用:算法可以理解为把输入转化为输出的计算步骤的序列。算法的重要性不言而喻,不仅给你找工作,从事某些行业带来便利,而且这代表这一种思维方式,去解决问题的做法。学习本书的目的不仅仅是了解这些算法,更重要的是学会自己去设计算法,分析自己设计的算法。分析算法主要是分析算法的正确性,及算法的效率,本书中的算法分析主要分析时间复杂度。
第二章:算法基础,在上一章对算法有了一个大概的了解之后,这一章开始讲述一些简单的算法。首先是插入排序,先上伪码:
这个插入排序的代码比较简单,不需要多解释,然后利用循环不变式证明了插入排序的正确性,循环不变式类似于数学归纳法,找到初始条件,即循环迭代开始之前是否满足条件,之后用数学归法的思想去证明能够逐步递推,最后判断结束的时候能否满足条件即可。接下来是算法分析,需要一定的数学基础,插入排序的时间复杂度为O(n^2)。
接下来是归并排序,其思想是:先将数据看成每组数据只有一个元素,然后将两组合并起来,相当于把两组有序的数据排序。需要开辟一组临时空间,然后逐个比较,赋值到新开辟的空间即可。
归并排序是一种分治的思想,就是将大问题逐步分解成小问题,解决小问题之后,将这些合并起来,便将整个问题解决了。归并算法的时间复杂度可以用二叉树的思想分析,得到时间复杂度为O(nlgn)。
在思考题中,出现了一道冒泡排序的题,这是一个比较常见的排序算法。
第一章:算法在计算中的作用:算法可以理解为把输入转化为输出的计算步骤的序列。算法的重要性不言而喻,不仅给你找工作,从事某些行业带来便利,而且这代表这一种思维方式,去解决问题的做法。学习本书的目的不仅仅是了解这些算法,更重要的是学会自己去设计算法,分析自己设计的算法。分析算法主要是分析算法的正确性,及算法的效率,本书中的算法分析主要分析时间复杂度。
第二章:算法基础,在上一章对算法有了一个大概的了解之后,这一章开始讲述一些简单的算法。首先是插入排序,先上伪码:
for i=2 to A.length key=A[i] j=i-1 while(A[j]>key and j>0) A[j]=A[j-1] j=j-1 A[i+1]=key
这个插入排序的代码比较简单,不需要多解释,然后利用循环不变式证明了插入排序的正确性,循环不变式类似于数学归纳法,找到初始条件,即循环迭代开始之前是否满足条件,之后用数学归法的思想去证明能够逐步递推,最后判断结束的时候能否满足条件即可。接下来是算法分析,需要一定的数学基础,插入排序的时间复杂度为O(n^2)。
接下来是归并排序,其思想是:先将数据看成每组数据只有一个元素,然后将两组合并起来,相当于把两组有序的数据排序。需要开辟一组临时空间,然后逐个比较,赋值到新开辟的空间即可。
MERGE_SORT(A,p,r) if p<r q=(p+r)/2 //将数组分解成两个数组 MERGE_SORT(A,p,q) //递归归并 MERGE_SORT(A,q,r) MERGE(A,p,q,r)
归并排序是一种分治的思想,就是将大问题逐步分解成小问题,解决小问题之后,将这些合并起来,便将整个问题解决了。归并算法的时间复杂度可以用二叉树的思想分析,得到时间复杂度为O(nlgn)。
在思考题中,出现了一道冒泡排序的题,这是一个比较常见的排序算法。
相关文章推荐
- 《Windows游戏编程大师技巧》 T3D游戏控制台程序实例及第一部分总结
- 转载:《Effective C#》Part II:第二部分总结
- 《Windows游戏编程大师技巧》 T3D游戏控制台程序实例及第一部分总结
- 汇编总结-第二部分_3_使用函数
- 汇编总结-第二部分_1_数据传送
- 《C++捷径教程》读书笔记--Chapter 7--函数,第一部分:基础知识(第二部分)
- 第二部分面向对像基础第五章下半部分与习题总结
- 《Windows游戏编程大师技巧》 T3D游戏控制台程序实例及第一部分总结
- 《算法导论》学习总结——第二部分6中位数和顺序统计学
- 《算法导论》学习总结——第二部分5基数排序、桶排序
- 《算法导论》学习总结——第二部分3快速排序
- 《算法导论》学习总结——第二部分2优先级队列
- 计算机与网络安全总结(第一部分:基本加解密算法)
- 计算机和网络安全总结(第二部分:网络攻击与安全)
- 项目总结(Ajax+Struts+Spring+Hiberante+SQLServer2000) 第一部分
- 项目总结(Ajax+Struts+Spring+Hiberante+SQLServer2000) 第二部分
- 第二部分面向对像基础第五章下半部分与习题总结
- C系列语言终极校对宝典【第一、第二部分】
- [JS]视频总结-第二部分_JavaScript基础
- 《Windows游戏编程大师技巧》 T3D游戏控制台程序实例及第一部分总结