操作時間複雜度
描述lst[2]
o(1)
訪問元素
lst.pop()
o(1)
彈出最後乙個值
o(1)
在末尾新增元素
lst.extend(l1)
o(k)
在末尾逐個新增元素
lst.clear()
o(1)
清空list
lst.copy()
o(n)
列表拷貝
lst.count(15)
o(n)
元素計數
lst.remove(15)
o(n)
刪除乙個元素
lst.reverse()
o(n)
反序lst.sort()
o(n*log(n))
排序lst.insert(1,200)
o(n)
在某一位置插入元素
del lst[0]
o(n)
刪除某個位置的元素
lst.index(15)
o(n)
查詢元素,並返回元素位置
bisect.bisect_left(lst, 15)
o(log(n))
有序列表使用bisect查詢元素
tuple因為不可寫,因此操作相對較少
tpl = tuple(range(10))
操作時間複雜度
描述tpl[2]
o(1)
訪問元素
tpl.count(2)
o(n)
元素計數
tpl.index(2)
o(n)
查詢元素,並返回元素位置
ss1 = set(range(10))
ss2 = set(range(5,15))
操作時間複雜度
描述5 in ss1
o(n)
判斷元素是否在set中
ss1 | ss2
o(len(ss1)+len(ss2))
取並集,等同於ss1.union(ss2)
ss1 & ss2
o(len(s)*len(t))
取交集,等同於ss1.intersection(ss2)
ss1 - ss2
o(len(ss1))
取差集,等同於ss1.difference(ss2)
ss1 ^ ss2
o(len(ss1)*len(ss2))
取異或集,等同於
ss1.add(11)
o(1)
增加元素
ss1.pop()
o(1)
彈出乙個元素
ss1.remove(5)
o(1)
刪除指定元素
dd =
操作時間複雜度
描述dd['e'] = 50
o(1)
插入元素
dd['a']
o(1)
訪問元素,等同於dd.get('a')
del dd['a']
o(1)
刪除元素
dd['b'] = 100
o(1)
修改元素
dd.pop('b')
o(1)
彈出乙個元素
dd.clear()
o(1)
清空字典
雙端佇列需要我們手動匯入後才能使用,也是python中一種常用的型別
from collections import deque
deq = deque(range(10))
ll = list(range(10))
操作時間複雜度
描述deq.pop()
o(1)
彈出最右側的元素
deq.popleft()
o(1)
彈出最左側的元素
o(1)
在右側增加乙個元素
o(1)
在左側增加乙個元素
deq.extend(ll)
o(k)
在右側逐個新增元素
deq.extendleft(ll)
o(k)
在左側逐個新增元素
deq.rotate(k)
o(k)
旋轉deq.remove(5)
o(n)
刪除指定元素
deq[0]
o(1)
訪問第乙個元素
deq[n-1]
o(1)
訪問最後乙個元素
deq[n/2]
o(n)
訪問中間元素
dfs時間複雜度 時間複雜度 空間複雜度
時間複雜度的數學證明方法相對比較複雜,通常在工程實際中,會分析就好。注意 只看最高複雜度的運算 int for for for for int遞迴如何分析時間複雜度?常數係數可以忽略,在分析時不用考慮,只要說以上術語即可。主定理 master throrem 上述第四種是歸併排序,所有排序演算法,最...
建堆O n 時間複雜度證明
建堆複雜度先考慮滿二叉樹,計算完全二叉樹建堆複雜度基本相同。對滿二叉樹而言,第i層 根為第0層 有2 i個節點。由於建堆過程自底向上,以交換作為主要操作,因此第i層任意節點在最不利情況下,需要經過 n i 次交換操作才能完成以該節點為堆根節點的建堆過程。因此,時間複雜度計算如下 t n 2 0 n ...
時間複雜度 空間複雜度
時間複雜度 在電腦科學中,演算法的時間複雜度是乙個函式,它定性描述了該演算法的執行時間。這是乙個關於代表演算法輸入值的字串 的長度的函式。時間複雜度常用大o符號 表述,不包括這個函式的低階項和首項係數。計算時間複雜度的方法 1 只保留高階項,低階項直接丟棄 2 係數不要 3 執行次數是常數是為o 1...