📊 算法时间复杂度分析

📋 功能说明
  • 演示算法时间复杂度计算
  • 勾股数求解示例
  • 测量算法执行时间
💻 源代码
import time

def find_pythagorean_triples(n):
    """
    找出所有满足 a+b+c=n 且 a²+b²=c² 的勾股数
    时间复杂度: O(n³)
    """
    start_time = time.time()
    count = 0
    
    for a in range(0, n + 1):
        for b in range(0, n + 1):
            for c in range(0, n + 1):
                if a + b + c == n and a**2 + b**2 == c**2:
                    print(f"a,b,c: {a},{b},{c}")
                    count += 1
    
    end_time = time.time()
    print(f"执行时间: {end_time - start_time:.2f}秒")
    print(f"找到 {count} 组解")
    
    return count

# 示例: n=1000时,T(n) = n³ × 2
find_pythagorean_triples(1000)

# 时间复杂度分析:
# T(n) = n × n × n × 2 = 2n³
# 大O表示法: O(n³)
📦 算法分析
时间复杂度:
  • T(n) = 2 × n³
  • O(n³) - 立方复杂度

优化思路:
  • 减少循环层数
  • 利用数学关系
  • 空间换时间