You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套循环函数时间复杂度辨析:O(n²)还是O(n²logn)?

Python代码时间复杂度分析争议
def create(t, m):
    n = len(t)
    while n > 1:
        s = ()
        for i in range(0, n, m):
            minX = t[i]
            for j in range(i+1, min(i+m, n)):
                if t[j] < minX:
                    minX = t[j]
            s = s + (minX,)
        n = len(s)
        t = s
        print(t)
    return t

示例调用:

print(create((11,9,10,6,7,8,5,4,3,2,1), 3))

题目要求基于输入元组t的长度n(m为2-9的正整数,n远大于m)分析代码时间复杂度。我认为是O(n²logn),但参考答案为O(n²),具体分析如下:

我的分析理由

while循环执行次数随n缩减呈对数级(每次n近似减半),需计入logn因子。外层for循环(i步长为m)每次迭代次数为O(n),嵌套内层for循环最坏情况为O(n),因此总复杂度应为O(n×n×logn)。

官方参考答案

复杂度为O(n²),因m是常数。两层for循环总时间为线性级(n + n/m + n/m²+... <2n),耗时由语句s = s + (minX,)主导,各轮while循环中该语句总时间为O((n/m)²)+O((n/m²)²)+...,求和后仍为O(n²)。

内容的提问来源于stack exchange,提问作者Wayne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:32:13