目录
2.总结:大O渐进表示法(大O符号:描述函数渐进行为的符号)
-
一.引入
算法是解决一个问题的方法,一个问题可对应多种算法,算法在编写成可执行程序后,需要消耗一定的时间资源和空间(内存)资源。因此评价一个算法的好坏,一般从时间和空间两个维度来考虑,及时间复杂度和空间复杂度。
时间复杂度主要是衡量一个算法运行的快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间,在计算机早期,计算机储存容量是很小的,所以对空间复杂度很在乎。但随着技术的发展计算机的容量已经达到了一个很高的程度(摩尔定律:计算机大约每年翻一倍(但是现在技术到达瓶颈,已经失效))。所以我们现在不用特别关心一个算法的空间复杂度,现在更多关注的时间复杂度。
二.时间复杂度的概念
时间复杂度的定义:在计算机学科中,算法的时间复杂度是一个函数(F(N)=2*N……+N),它定量的描述一个算法运行所需要的时间,一个算法执行消耗的时间,理论上,是不能够算出来的,只有将程序发放在编译器上跑起来,才知道它运行的时间,但是在解决一个问题是要把每一个算法都敲出来上机测试吗?当然可以,但是!很麻烦,浪费时间,所以才有了时间复杂度这个分析方法。一个算法花费的时间与其中语句执行的次数成正比,所以算法的基本执行次数,为算法的复杂度。
即:找到某条基本语句与问题N之间的数学表达式,就是算出了该算法时间的复杂度。
1.例子
不难看出执行次数的函数F(N)=N……2+2N+10,当N取不同值时执行次数也不同,各项对次数的影响各不相同,随着N的不断增大(不用考略N值很小的情况,计算机的cpu主频单位时间内计算次数上亿次),后两项对函数的大小影响微乎其微,所以就可忽略掉,只取最高次数项--N……2