(2018-04-17.Python从Zero到One)一、数据结构和算法基础__1.1.5算法分析

上一篇文章为:→1.1.4算法效率衡量

算法分析

1.第一次尝试的算法核心部分

for a in range(0, 1001):
    for b in range(0, 1001):
        for c in range(0, 1001):
            if a**2 + b**2 == c**2 and a+b+c == 1000:
                print("a, b, c: %d, %d, %d" % (a, b, c))

时间复杂度:

T(n) = O(nnn) = O(n3)

1.第二次尝试的算法核心部分

for a in range(0, 1001):
    for b in range(0, 1001-a):
        c = 1000 - a - b
        if a**2 + b**2 == c**2:
            print("a, b, c: %d, %d, %d" % (a, b, c))

时间复杂度:

T(n) = O(nn(1+1)) = O(n*n) = O(n2)

由此可见,我们尝试的第二种算法要比第一种算法的时间复杂度好多的。


下一篇文章为:→1.1.6常见时间复杂度

你可能感兴趣的:((2018-04-17.Python从Zero到One)一、数据结构和算法基础__1.1.5算法分析)