我在Facebook上得到了答案。感谢沙尚·古普塔。在
我假设你知道渐近符号的基本知识。在
现在,暂时忘掉a.sort()函数,集中精力理解列表:
a=[随机.randint(1100)对于x范围内的i(1000000)]
1000000相当大,所以现在我们把它减少到10。在
a=[随机.randint(1100)对于x范围内的i(10)]
你在这里建立了一个包含10个元素的新列表。每个元素都是通过randint函数生成的。假设时间的函数是。对于10个元素,这个函数将被调用10次,对吗?在
现在,让我们概括一下。对于整数“n”
a=[随机.randint(1100)对于x范围内的i(n)]
你将调用randint函数n次。在
所有这些也可以写成:
对于x范围内的i(n):
a、 追加(randint(1100))
这是O(n)。在
下面是一个简单的print语句。这又是O(n)(在内部,python解释器遍历整个列表)。现在是分类部分。您使用了sort函数。要花多少时间?有很多排序算法在那里,而且没有详细介绍使用的算法,我可以安全地假设时间复杂度将是O(n logn)
因此,代码的实际时间复杂度是T(n)=O(n logn)+O(n),即O(n logn)(对于大n,忽略较低的项)
空间呢?您的代码初始化了大小为“n”的新列表。因此空间复杂度为O(n)。在
给你。在