前言
你好,我是彤哥,一个每天爬二十六层楼还不忘读源码的硬核男人。
大家都知道,数据结构与算法解决的主要问题就是“快”和“省”的问题,即如何让代码运行得更快, 如何让代码更节省存储空间。
所以,“快”和“省”是衡量一个算法非常重要的两项指标,也就是我们经常听到的时间复杂度和空间复杂度分析。
那么,为什么需要复杂度分析呢?复杂度分析的方法论是什么呢?
这就是我们本节要解决的问题。
好了,进入今天的学习吧。
为什么需要复杂度分析?
首先,我们来思考一个问题:对于两个算法,我们如何评判谁运行得更快,谁运行时更节省内存?
你可能会说,这还不简单,把这两个算法运行一遍,统计下运行时间和占用内存不就可以了吗?
没错,这确实是一种不错的方法,而且它还有个非常形象的名字:事后统计法。
但是,这种统计方法具有非常明显的问题:
不同的输入对结果影响很大
对于一些输入,可能算法A执行得更快;对于另外一些输入,可能算法B执