小编Gae*_*ego的帖子

置换算法的Big-O分析

result = False
def permute(a,l,r,b):
    global result
    if l==r:
        if a==b:
            result = True
    else:
        for i in range(l, r+1):
            a[l], a[i] = a[i], a[l]
            permute(a, l+1, r, b)
            a[l], a[i] = a[i], a[l]

string1 = list("abc")
string2 = list("ggg")
permute(string1, 0, len(string1)-1, string2)
Run Code Online (Sandbox Code Playgroud)

所以基本上我认为找到每个排列需要n ^ 2步(时间一些常数)并找到所有排列应该取n!脚步.那么这会使它成为O(n ^ 2*n!)?如果是这样的话!接管,只做O(n!)?

谢谢

编辑:这个算法对于找到排列似乎很奇怪,这是因为我也用它来测试两个字符串之间的字谜.我还没有重命名这个方法但抱歉

algorithm big-o python-3.x

9
推荐指数
1
解决办法
187
查看次数

标签 统计

algorithm ×1

big-o ×1

python-3.x ×1