体验算法之美

76 阅读1分钟

提到数据结构+算法的学习,有两个问题是不可避免的,一个是时间复杂度,可以理解为算法的运行时间,如果算法运行时间太长,那这个算法就没法用;另一个是算法的空间复杂度,可以理解为把算法存储在计算机中需要多大的空间,如果需要空间太大,那这个算法也没法用。
因此,需要对一个算法的时间复杂度和空间复杂度进行分析,来确定该算法的可行性。
具体定义和复杂度算法可以自行去问某度,讲解很清楚。在此略过。
本文主要是通过一个例子让大家体验一下算法的重要性:
斐波那契数列:1 1 2 3 5 8 13 .... n 求解第k个斐波那契数列的值。
废话不多说直接上代码(采用Java编程语言)
第一种方式(递归) 第二种方式(滚动变量)

image.png 同样计算第50位斐波那契数列结果,耗时对比,可以看出一种好的算法是多么重要。

image.png
其实这种统计时间复杂度的方式为事后统计法,这种统计的方式其实对硬件依赖较大,不是很科学,但足以说明了问题。