欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构复习

程序员文章站 2024-02-27 14:11:33
...

数据结构第一课上半节O(1)和O(n)

声明:个人学习,复现代码,不存在商业用途,如果涉嫌侵权,请作者联系我。

1.1 时间复杂度

O(1)和O(n)

来源:时间复杂度学习链接

Q2:下面四组代码,哪组代码运行时间最短:

print( 'Hello World')

for i in range(n):
    print('Hello World')

for i in range(n):
    for j in range(n):
        print('Hello World')
    
    
for i in range(n):
    for j in range(n):
        for k in range(n):
            print('Hello World')

Q2:用什么方式来体现算法运行的快慢?

计算机领域使用 O 来表示估计,大约

Q2.1:类比生活中的一些事件,估计时间?

* 眨一下眼睛	一瞬间/几毫秒
* 口算’29+68‘    几秒
* 烧一壶水         几分钟
* 睡一觉              几小时
* 完成一个项目    几天/几星期/几个月
* 飞船从地球飞出太阳系    几年
print( 'Hello World')

==> 该时间复杂度,我们定义成O(1)

for i in range(n):
    print('Hello World')
    
==> 该时间复杂度,我们定义为O(n)
for i in range(n):
    for j in range(n):
        print('Hello World')
        
==> 该时间复杂度,我们定义为O(n**2)
for i in range(n):
    for j in range(n):
        for k in range(n):
            print('Hello World')
==> 该时间复杂度,我们定义为O(n**3)

小节练习:

print('Hello World')
print('Hello Python')
print('Hello Algorithm')





'''
上面三个print语句联立输出,时间复杂度是多少:
答案:O(3)

'''


for i in range(n):
    print('Hello World')
    for j in range(n):
        print('Hello World')

'''
上面三个print语句联立输出,时间复杂度是多少:
答案:O(n**2 + n) 

'''


'''
上述答案有误,类比:
我们不能说,煲水三个壶要三个几分钟。
我们通常说,同时煲三壶水需要几分钟。
因此,三个print()联立:时间复杂度为  o(1)

你睡一觉多长时间:一般都是大概,或者几个小时,不会给出具体的时分秒
for i in range(n): =>即 一个 O(n)
两个就是 =》 O(n **2)  
中间出现的 print() 其实都是0(1)
所以在 O(n)级别上看,0(1)很小。

类比于:煲水几分钟,
睡觉几小时,但是多了少了几分钟,在睡觉这个时间级别来看,啥也不是。

真正答案: o(1)  和 O(n**2)

'''