持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
前言
在我们学习了那么多数据结构和算法的情况下,可以问自己一个问题,你自己学习的算法和数据结构或者已经掌握的算法和数据结构,能够快速的分析出其时间复杂度呢。如果不可以的话,那么这个方面还需要继续加强。那么今天我们就来聊一聊时间复杂度。
时间复杂度是一个衡量算法执行效率的重要指标之一,在我们遇到一些性能瓶颈,或者是要增强代码的执行性能时,先对关键代码块处进行复杂度的分析是非常必要的。复杂度的分析也是算法的精髓。
引入时间复杂度原因
在如今的云服务器上,web应用中,整个Java生态里。对于系统的指标监控方面多种多样。我们也可以根据系统的监控指标来分析整个Web的性能如何。但是这个需要在一个前提下,即代码层面的优化已经十分完善了。原因有如下几种:
-
测试结果依赖于部署的环境 假如两个相同的测试方法,一个是优化过后的,一个是优化前的。把优化后的代码放在配置低的机器上以及优化前的代码放在顶配的机器上。测试结果将受到机器配置的影响,有可能优化前的代码的效率比优化后的代码还要高。
-
测试结果受到测试的数据规模的影响 这个与机器配置是相同的意思,假如说数据规模只局限于100个数据内,那么无论你怎么优化你的代码,采用了何种方式,已经趋向于极致的优化了。但是受限于数据规模,你根本无法得知,这个优化后的性能提升速度是什么样子的。
所以我们需要将这两个限制“去除”,我们需要一个不用具体的测试数据来测试,就可以粗略的估算算法执行效率的方法。这就是今天讨论的时间复杂度分析。
总结
时间复杂度对于算法的学习非常重要!明白时间复杂度的分析也是重中之重。