Answers:
计算复杂度只是一个更笼统的术语,因为时间不是我们可能要考虑的唯一资源。第二个最明显的是算法使用的空间,因此我们可以讨论空间复杂度,它也是计算复杂度的一部分。实际上,我们可以针对您关心的任何措施执行此操作,当然某些措施比其他措施更有用。
因此,计算最坏情况下算法所采取的步骤数将为解决的问题提供时间复杂度界限,计算其使用的内存/磁带单元数将为空间复杂度界限等。
还要记住,如果要严格一点,复杂性是指问题,而不是算法,因此问题具有复杂性界限,算法具有资源界限(运行时间,空间使用...)。这只是定义形式的问题,复杂性理论可以解决问题。是的,算法是用于分析问题和复杂性和Algorithmics公司紧密联系在一起的重要工具,但形式上我们不会说合并排序(算法)是,它的问题S ^ ō [R 牛逼我ñ 摹这是在P。合并排序使用某些资源(O (n log n )步骤)。资源的约束和算法的正确性暗示了问题的复杂性(上限),但是它们是不同的东西。也是Ť Ç 0 -complete下甲Ç 0 -reductions,这种复杂的约束真的只能被用于一个问题陈述(但是拥有算法影响)。
循环复杂度通常用作计算复杂度的度量,https://stackoverflow.com/questions/9097987/calculation-of-cyclomatic-complexity中提供了一个有用的示例
通过算法可能有许多不同的路径(可能是嵌套的路径),从而使其具有较高的循环复杂度,但是没有循环会使其具有较低的时间复杂度。具有单个循环的程序将具有较低的循环复杂度,但可能具有较高的时间复杂度。
圈复杂度通常用作代码所需维护的度量。http://docs.sonarqube.org/display/SONAR/Bad+Distribution+of+Complexity中提供了更详细的讨论。这与时间复杂度不同,后者是代码的运行时间测量,可用于评估用户对系统有效性的感知。