Python 如何计算算法的增长率和时间量?

Python 如何计算算法的增长率和时间量?,python,algorithm,time,complexity-theory,Python,Algorithm,Time,Complexity Theory,我现在很喜欢艾伦·唐尼的《思考复杂性》,几个小时前我完成了关于增长率的部分。我暂停阅读,用谷歌搜索增长率,并扩展了这本书给我的信息。我还发现,您可以计算算法计算原始数据所需的时间。我有很多问题是谷歌无法回答的,或者我需要在我的答案中加入一些个人因素,因为这确实能帮助我理解。我的问题是: 1-如何计算简单算法的增长率?例如,我刚刚编写了这个循环,用泰勒级数计算给定角度的正弦(弧度): for i in range(0, 360): return sum(((-1)**i /

我现在很喜欢艾伦·唐尼的《思考复杂性》,几个小时前我完成了关于增长率的部分。我暂停阅读,用谷歌搜索增长率,并扩展了这本书给我的信息。我还发现,您可以计算算法计算原始数据所需的时间。我有很多问题是谷歌无法回答的,或者我需要在我的答案中加入一些个人因素,因为这确实能帮助我理解。我的问题是:

1-如何计算简单算法的增长率?例如,我刚刚编写了这个循环,用泰勒级数计算给定角度的正弦(弧度):

    for i in range(0, 360):
        return sum(((-1)**i / (factorial((2 * i) + 1))) * d ** ((2*i) + 1))
和阶乘:

def factorial(n):
    factorial = 1
    for i in range(1, n+1):
        factorial *= i

return factorial
我如何计算它的增长率

2-我开始熟悉一些非常糟糕的算法,比如Bogosort。使用bogosort对数组进行排序需要花费大量时间。但是你怎么计算时间呢?每台计算机都不一样

3-什么是大O符号,它与增长率有什么关系


谢谢你的回答。

一般来说,计算函数所用时间不是一个好方法,因为它依赖于许多因素。由于这个原因,我们经常用计算步骤来表示复杂性

存在多个符号(大Oh、大ω、大θ)。 大Oh表示一个上限,因此O(n)表示在最坏的情况下它将执行n个步骤

大ω(Ω)是一个下限,因此Ω(n)表示最少n步。 两者的组合是大的θ},因此,}(n)表示它将恰好需要n个步骤

在您的情况下,
factorial
被定义为

def factorial(n):
    factorial = 1
    for i in range(1, n+1):
        factorial *= i

return factorial

此函数将从1到n+1循环一次,因此,它取决于其参数n。我们可以说它将执行n个步骤,因此,我们可以说,
factorial
在ㄊ(n)中。请注意,这显然是线性的。

通常,这不是计算函数所需时间的好方法,因为它依赖于许多因素。由于这个原因,我们经常用计算步骤来表示复杂性。例如,大O表示法:问题(1)取决于阶乘是如何实现的;缓存以前结果的实现将与不缓存的实现大不相同。@HyperZ:明白。不过,我要找维基百科以外的其他来源。“它灼伤了我的大脑,我不是很聪明。”丹海达:我加上了阶乘。那是什么呢?对数?线性的Square?@code在硅谷查看
factorial
的定义,我们注意到for循环从0到n+1运行一次。因此,它与输入是线性的。因此,O(n)。