运行时间是指程序运行所需的时间。时间复杂度是当输入规模趋近于无穷时,运行时间的渐进行为的描述。
你可以说运行时间“是”O(n^2)或其他复杂度类别,因为这是描述复杂度类别和大O符号的惯用方式。实际上,运行时间不是一个复杂度类别,它要么是一个持续时间,要么是一个给出持续时间的函数。 “是O(n ^ 2)”是该函数的数学属性,而不是完整的表征。确切的运行时间可能是2036 * n ^ 2 + 17453 * n + 18464个CPU周期,或其他任何值。虽然你通常不需要知道这么详细的信息,而且它也可能取决于实际的输入以及输入的大小。
时间复杂度和运行时间是两个完全不同的概念。
时间复杂度是与算法相关的完全理论性概念,而运行时间是代码运行所需的时间,完全不涉及理论。
两个算法可能具有相同的时间复杂度,比如O(n^2),但其中一个算法可能需要比另一个算法多两倍的运行时间。
运行时间是衡量代码或程序完成所需操作次数的指标。这里的关键词是“操作”和“完成”,每个单独操作完成所需的时间可能会受到处理器、内存等因素的影响。
在运行时间方面,如果我们有两种不同的算法解决同一个问题,优化后的算法可能需要比未经优化的算法更长的时间才能完成,因为存在各种因素,如RAM、PC的当前状态(服务于其他程序)等,甚至是计算运行时间本身的函数。
因此,仅根据完成所需的操作次数来衡量算法的效率是不够的,而应该将时间与输入进行比较,这样可以消除所有外部因素,这正是时间复杂度所做的。
时间复杂度是衡量算法随着输入规模增加而变化的指标。
时间复杂度也可以从算法/代码背后的逻辑中计算出来。另一方面,当代码完成时,可以计算出运行时间。
时间复杂度是算法中操作次数的度量,因此对于特定算法而言是固定的。
运行时间是机器执行算法中这些操作所需的实际时钟时间,这取决于许多因素,如机器的配置、该机器的当前负载等等,因此它对于特定算法而言并不是固定的。