小编sj7*_*070的帖子

尽管下面两个函数的时间复杂度似乎相似,但为什么性能会有巨大差异?

我正在尝试评估对数字列表进行排序的两个Python方法的性能。两者的时间复杂度似乎均为n ^ 2,但经验数据表明,其中一个的性能优于另一个。有什么原因吗?

我写了两种方法,一种使用嵌套的for循环,另一种方法是找到一个最大值并将该max迭代添加到新列表中(并从旧列表中删除)。

方法1:

def mysort1(l):
    i = 0
    j = 1
    for i in range(0,len(l)-1):
        for j in range(i,len(l)):
            if l[i] > l[j]:
                tmp = l[j]
                l[j] = l[i]
                l[i] = tmp
    return l
Run Code Online (Sandbox Code Playgroud)

方法2:

def mysort2(l):
    nl = []
    for i in range(0,len(l)):
        m = max(l)
        nl.insert(0, m)
        l.remove(m)
    return nl

Run Code Online (Sandbox Code Playgroud)

两者均以相反的顺序用10000个数字进行了测试。使用配置文件时,方法1大约需要8秒(10000次以上的调用),方法2仅需要0.6秒(30000次以上的调用)。尽管两种方法的时间复杂度相同,但为什么方法2的性能比方法1更好的任何原因?

python time-complexity

7
推荐指数
1
解决办法
181
查看次数

如何将 graphql 模式导入 graphene-python 程序?

如何将现有的 graphql 模式(下面的示例)导入到石墨烯程序中,而不是在 python 中定义类来创建模式?

type Hello {
   name: String
}
type Query {
  hello: Hello!
}

schema {
  query: Query
}
Run Code Online (Sandbox Code Playgroud)

python graphql

6
推荐指数
1
解决办法
783
查看次数

标签 统计

python ×2

graphql ×1

time-complexity ×1