衡量代码的运行效率对于工程师来说是一项非常重要的基本技能。
两种复杂性概述
复杂度是衡量代码运行效率的重要衡量因素。 对于计算机来说,它是通过程序执行计算任务的过程,即处理输入数据并获得最终结果。
编写代码的核心是完成计算。
对于同一个计算任务,使用不同的计算方法获得结果的过程的复杂度是不同的。
例如:数据需要在在线系统中实时处理。 当系统平均每分钟添加300M数据,而我们的代码在一分钟内无法完成这300M数据的处理时,系统就会出现异常。 首先,计算机执行速度变得越来越慢效率是时间还是速度,直到系统死机。
当出现这种问题时,我们首先要从降低代码复杂度的角度来处理。 这时候我们就需要考虑代码的时间复杂度和空间复杂度。
对于计算机程序来说效率是时间还是速度,其消耗的资源就是计算过程中所需的时间和空间。
当然,程序的资源消耗不能用绝对的方式来衡量,因为无论是时间还是空间,它们消耗的资源都与输入数据量密切相关。 准确地说,它们是密切的、正相关的,也就是说,对于少量的数据,消耗的资源自然会更少。
为了更客观地衡量消耗程度,我们通常关注时间或空间消耗与数据量之间的关系。
第二种复杂性的具体表现
根据复杂度的表达,复杂度可以理解为关于输入数据量n的函数。 当代码的复杂度为f(n)时,我们可以使用大写字母O和括号将复杂度表示为O(f(n))。
例如,O(n)表示复杂度与计算实例数n线性相关;
O(logn)表示复杂度与计算实例的数量n成对数关系。
四种复杂度计算原则
注:O(1)也代表一种特殊的复杂度,即可以用有限且可数的资源来完成某项任务。 这里有限可数的具体含义是它与输入数据量n无关。