专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

时间复杂度

时间复杂度:用来评估算法的运行效率的一个公式。

其中的“1”、“n”是一个单位,表示几次

第一个例子:

 print("hello world") ====> O(1)===>(运行一次)
 #--------------------------------------------------
 for i in range(n):
     print("hello world") ====>O(n) ====>(运行n次)
 #-------------------------------------------------
 for i in range(n):
     for j in range(n):
         print("hello world") ===>O(n**2) ===>(运行n的平方)
 #------------------------------------------------------
 for i in range(n):
     for j in range(n):
         for k in range(n):
             print("hello world")===>O(n**3) ====(运行n的三次方)  
      

第二个例子:

 print("hello world")
 print("hello python")
 ======>O(1)
 for i range(n):
     print("hello world")
     for j in range(n):
         print("hello world")
 =======>正常算的应该是O((1+n)n)/O(n**2+n),但是在时间复杂度中只是表示大约的存在,所以我们写成O(n**2)

第三个例子:

 while n > 1:
     print(n)
     n = n//2
 n = 64 输出:64、32、16、8、4、2;
 ​
 2**6 = 64
 log2 64 = 6
 #时间复杂度记为:O(log2 n/logn)  
 #如果你的代码是循环迭代折半时,肯定用logn
 该式时间复杂度表示为:O(log2 64)

时间复杂度小结:

一般来说,时间复杂度高的算法比复杂度低的算法慢;

常见复杂度(按效率排序):

O(1)<O(logn)<O(n)<O(nlogn)<O(n的平方) < O(n2 *logn)<O(n的三次方)

技巧:如何简单快速的判断出算法的复杂度(适用于绝大多数的简单情况)

1、 确定问题规模n
2、 循环减半的过程–> logn
3、 k层关于n的循环 —>n^k

复杂的情况:根据算法的执行过程判断

文章永久链接:https://tech.souyunku.com/20731

未经允许不得转载:搜云库技术团队 » 时间复杂度

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们