时间复杂度
时间复杂度:用来评估算法的运行效率的一个公式。
其中的“1”、“n”是一个单位,表示几次
第一个例子:
1 print("hello world") ====> O(1)===>(运行一次) 2 #-------------------------------------------------- 3 for i in range(n): 4 print("hello world") ====>O(n) ====>(运行n次) 5 #------------------------------------------------- 6 for i in range(n): 7 for j in range(n): 8 print("hello world") ===>O(n**2) ===>(运行n的平方) 9 #------------------------------------------------------ 10 for i in range(n): 11 for j in range(n): 12 for k in range(n): 13 print("hello world")===>O(n**3) ====(运行n的三次方)
第二个例子:
1 print("hello world") 2 print("hello python") 3 ======>O(1) 4 for i range(n): 5 print("hello world") 6 for j in range(n): 7 print("hello world") 8 =======>正常算的应该是O((1+n)n)/O(n**2+n),但是在时间复杂度中只是表示大约的存在,所以我们写成O(n**2)
第三个例子:
1 while n > 1: 2 print(n) 3 n = n//2 4 n = 64 输出:64、32、16、8、4、2; 5 6 2**6 = 64 7 log2 64 = 6 8 #时间复杂度记为:O(log2 n/logn) 9 #如果你的代码是循环迭代折半时,肯定用logn 10 该式时间复杂度表示为:O(log2 64)
时间复杂度小结:
一般来说,时间复杂度高的算法比复杂度低的算法慢;
常见复杂度(按效率排序):
O(1)<O(logn)<O(n)<O(nlogn)<O(n的平方) < O(n2 *logn)<O(n的三次方)
技巧:如何简单快速的判断出算法的复杂度(适用于绝大多数的简单情况)
-
确定问题规模n
-
循环减半的过程--> logn
-
k层关于n的循环 --->n^k
复杂的情况:根据算法的执行过程判断
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程