前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >01-时间复杂度

01-时间复杂度

作者头像
xbhog
发布2019-10-22 17:13:58
2750
发布2019-10-22 17:13:58
举报
文章被收录于专栏:开发技能乱炖开发技能乱炖

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_43908900/article/details/102537343

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

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

第一个例子:

代码语言:javascript
复制
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的三次方)        

第二个例子:

代码语言:javascript
复制
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)

第三个例子:

代码语言:javascript
复制
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

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

个人技术性网站,更多内容尽在此站:http://xbhog.cn/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 个人技术性网站,更多内容尽在此站:http://xbhog.cn/
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档