时间复杂度(1)

前言

时间复杂度(Time complexity)是算法中一个重要的概念,一起来了解一下

O(1)

观察以下代码段

print("Hello world!")

这是一句输出语句,那在算法中怎么表示呢?

首先我们了解一下表示算法的时间复杂度的符号:用O()表示

而这段语句很简短,只有1句语句,所以可以直接填写O(1)

那我们观察以下这段代码

print("Hello csdn!")
print("Hello github!")
print("Hello vscode!")
print("Hello Earth!")

那有同学肯定要说了,O(4)啊,这也太简单了吧!X

No~No~No

O()里面填写的是一个单位,并不用精确到具体数,所以这段代码仍然用O(1)来表示

况且时间复杂度就是用来表示时间的,用来打印1句和4句速度差别极小

O(n)

观察以下代码,我们能用O(1)判断吗?

for i in range(n):
    print("你好")

这段语句中range了n,显然不能用O(1)判断

观察一下 for i in range(n),这里的n是不是可以用作一个单位呢?

O(n²) & O(n³)

观察以下代码,怎样判断嵌套循环的时间复杂度呢?

for i in range(n):
    for j in range(n):
        print("hi")

这是一个双层的嵌套循环,根据我们前面判断O(n)的经验,你想一想怎zai么去判断呢?

在单层嵌套循环中,我们循环了n次,也就是n*1次,那双层嵌套循环,我们是不是就循环了

n*n次,也就是n²次了

掌握了这么多内容,看看如何判断如下代码的时间复杂度

for i in range(n):
    print("哈喽")
    for j in range(n):
        print("?")
        for k in range(n):
            print("111")

三层嵌套循环,然后都有打印,难道是O(n³+n²+n¹)?

No~No~No

前面说过,时间复杂度的单位表示的是大概,所以直接用O(n³)就好了

下次看到有几层嵌套,可以写O(n几次方)

关于O(logn) O(n!) O(nⁿ)等就详见下回啦

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值