运行时间的描述
我们可以用外部环境直接计算程序运行秒数。Unix有一个内置的time命令可以计算耗时。
时间复杂度
1. 我们只关心n趋于无穷大时谁的时间消耗更少。
2. 只考虑最坏的情况,忽略最好的情况。有时也关心平均情况。
3. 在多项式耗时中,只有最高次数的系数重要。(取极限)
4. 忽略常数项(和系数)
时间复杂度的计算:
Big-Theta 大Θ计算:
用来描述函数的增长顺序。
举例如下:
Big-O 大O计算:
大Θ计算可以看成“等于”,而大O计算可以看成“小于或等于”。
递归的时间复杂度:
二分法查找的时间复杂度:。底数不重要。
log是一个非常好的时间复杂度,如果能达到log就说明代码效率已经很高了。
MergeSort时间复杂度:
选择排序时间复杂度:
cs61a在这里面深入讲解了MergeSort的想法,由来和实现。如果我们将一个未排序的数组分成两个数组再分别排序最后合在一起,将会节约时间。如果将一个未排序的数组分成最多个小数组,每个数组只有一个数字,那么就不需要再排序,由此引出MergeSort的想法。