Python数据结构与算法之 常见时间复杂度与计算规则

Python数据结构与算法之 常见时间复杂度与计算规则_第1张图片
常见的时间复杂度(大O表示法):
O(1):常熟阶
O(n):线性阶
O(n2):平方阶
O(logn):对数阶
O(nlogn):nlogn阶
O(n3):立方阶
O(2n):指数阶
Python数据结构与算法之 常见时间复杂度与计算规则_第2张图片
大小关系: O(1)2)3)n)n)

Python中衡量代码的时间复杂度

l = []
l.append() #不能代表时间复杂度
l.insert()

Python数据结构与算法之 常见时间复杂度与计算规则_第3张图片
timeit模块
class timeit.Timer(stme=‘pass’, setup=‘pass’, timer=)

#多次测算,取平均值
timeit.Timer.timeit(number=1000000)

import timeit

def testappend():
    li = []
    for i in range(10000):
        li.append(i)

def testadd():
    li = []
    for i in range(10000):
        li += [i]

def testgenerator():
    li = [i for i in range(10000)]

def test4():
    li = list(range(10000))

timer1 = timeit.Timer(stmt="testappend()", setup="from __main__ import testappend")
print("append:",timer1.timeit(number=1000))

timer2 = timeit.Timer(stmt="testadd()", setup="from __main__ import testadd")
print("+:",timer2.timeit(number=1000))

timer3 = timeit.Timer(stmt="testgenerator()", setup="from __main__ import testgenerator")
print("[i for i in range]:",timer3.timeit(number=1000))

运行结果:
append: 0.952796032
+: 0.9960017679999998
[i for i in range]: 0.4158099769999999
+比较耗时

def test5():
    li = []
    for i in range(10000):
        li.append(i)

def test6():
    li = []
    for i in range(10000):
        li.insert(0, i)
      
timer1 = timeit.Timer(stmt="test5()", setup="from __main__ import test5")
print("append:",timer1.timeit(number=1000))

timer2 = timeit.Timer(stmt="test6()", setup="from __main__ import test6")
print("insert:",timer2.timeit(number=1000))

运行结果:
append: 0.950771316 队尾追加很快
insert: 21.218597351 从头部插入很耗时

Python list和dict的时间复杂度

Python数据结构与算法之 常见时间复杂度与计算规则_第4张图片
list 和 dit是一个容器,不是一个基本类型(int, float等)。
Python数据结构与算法之 常见时间复杂度与计算规则_第5张图片
dict寻找键

你可能感兴趣的:(Python)