摘要:
本章介绍了算法分析中的渐进分析符号,几个重要渐进记号的定义如下:Θ(g(n))={ f(n): 存在正常数c1,c2和n0,使对所有的n>=n0,有0<=c1g(n)<=f(n)<=c2g(n) }O(g(n))={ f(n): 存在正常数c和n0,使对所有n>=n0,有0<=f(n)<=cg(n) }Ω(g(n))={ f(n): 存在正常数c和n0,使对所有n>=n0,有0<=cg(n)<=f(n) }o(g(n))={ f(n): 对任意正常数c,存在常数n0>0,使对所有的n>=n0,有0<=f(n)< 阅读全文
摘要:
本章通过介绍插入排序和归并排序两种常见的排序算法来说明算法的过程及算法分析,在介绍归并排序算法过程中引入了分治(divide-and-conquer)算法策略。1、插入排序 输入:n个数(a1,a2,a3,...,an) 输出:输入序列的一个排列(a1',a2',a3',...an')使得(a1'≤a2'≤a3'≤...≤an')。 插入排序的基本思想是:将第i个元素插入到前面i-1个已经有序的元素中。具体实现是从第2个元素开始(因为1个元素是有序的),将第2个元素插入到前面的1个元素中,构成两个有序的序列,然后从第3个元素开始, 阅读全文
摘要:
本章是本书的开篇,介绍了什么是算法,为什么要学习算法,算法在计算机中的地位及作用。 算法(algorithm)简单来说就是定义良好的计算机过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。即算法就是一系列的计算步骤,用来将输入数据转换成输出数据。 书中有一句话非常好: Having a solid base of algorithm knowledge and technique is one characteristic that separates the truly skilled programmers from the novices. 是否具有扎实的算法知识... 阅读全文
摘要:
对于我们学计算机的来说,算法是程序员的内功,需要时间去练习。我还有大半年毕业,趁着在学校的时光,利用时间修炼内功。看《算法导论》是一个非常艰苦的过程,需要思考,练习。尤其是对我将要毕业的人来说,大环境下大家都去准备什么毕业旅游之类,尽情的去玩。玩是肯定要玩的,我想在玩的这段时间中也能学到知识。要耐得住寂寞,享受看书编程的乐趣。打下坚实的基础,为以后做好铺垫。 阅读全文