算法的时间复杂度是衡量一个算法效率的基本方法。在阅读其他算法教程书的时候,对于算法的时间复杂度的讲解不免有些生涩,难以理解。进而无法在实际应用中很好的对算法进行衡量。《大话数据结构》一书在一开始也针对算法的时间复杂度进行了说明。这里的讲解就非常明确,言简意赅,很容易理解。下面通过《大话数据结构》阅读笔记的方式,通过原因该书的一些简单的例子和说明来解释一下算法的时间复杂度和它的计算方法。
首先从基本定义下手,来了解一下什么是“算法的时间复杂度”,《大话数据结构》一书中对算法的时间复杂度定义如下:“算法语句总的执行次数 T(n) 是关于问题规模 n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n) = O(f(n)) 它表示随问题规模 n 的增大,算法执行时间的增长率和f(n) 的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中 f(n) 是问题规模 n 的某个函数。”光从定义来理解算法的时间复杂度还是比较难的,我们再结合一个简单的例子来说明。计算 1 + 2 + 3 + 4 + ...... + 100 = ? 这样的问题想必大家都遇到过,这里我们通过 C 语言用最简单的方法实现一下这个问题的算法。、
int sum = 0, n = 100; //执行了 1 次
for (int i = 1; i <= n; i++) { //执行了 n + 1 次
sum += i; //执行了 n 次
}
printf(" sum = %d", sum);