对于该节的学习,还有待深入理解:
上总结:
1.测定一个算法的运行时间的最可靠方法就是计数它所执行的基本操作的数量,运行时间与这个计数结果成正比。
2.为了分析一个程序的运行时间,重要的是把这个程序看成与实现它的程序设计语言无关的算法。并分析这个算法。
3.把一个算法的基本操作的技术表示成输入规模变量的函数
4.给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么说f(n)的增长渐进快于g(n)。
5.算法运行时间的大O阶获得步骤:
stap1.用常数1取代运行时间中的所有加法常数。
stap2.在修改后的运行时间中,只保留最高阶项。n
stap3.如果最高阶项不是1,(如果有的话)去除与这个相乘的常数。
6.若干典型的运行时间阶是:O(1)(常数阶),O(n)(线性阶),O(n平方)(二次阶),O(n立方)(三次阶),O(n log n),O(log n)(对数阶),
O(k n次方)(指数阶)。
排列后: 1 < log n < n < nlogn < n平方 < n立方 < k n次方
7.对于一个算法,可以把独立分析出来的它的不同组件的运行时间相加,得到这个算法本身的运行时间。
8.对于川县在算法输入规模中的每一个变量,运行时间函数中至多有一项包含该变量。
9.算法的最坏情况运行实际那保证运行时间不会变的更坏。
10.算法的平均运行时间是平均可以期待的运行时间。通常很难通过分析确定算法的平均运行时间。
11.时间复杂度指的是运行时间需求,而空间复杂度值得是空间需求。
12.无限定词的复杂度通常指的是时间复杂度。
13.如果没有明示最坏or平均情况复杂度,则通常指最坏情况复杂度。
14.一个算法的空间需求总是小于或等于它的时间需求。