小頂堆時間複雜度 Python常用操作的複雜度

2021-10-16 12:14:49 字數 2569 閱讀 7799

操作時間複雜度

描述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...