一、時間複雜度計算規則
1.基本操作,即只有常數項,其時間複雜度為o(1)。比如if, print 。 與規模n無關
2.順序結構 ,按加法計算
3.迴圈結構, 按乘法計算
4。分支結構, 時間複雜度取最大值。
二、常見時間複雜度與大小關係
常數項 o(1) 12線性項 o(n) 2n + 3平方項 o(n^2) 4n^3 + 5n + 36對數項 o(log(n)) 5logn + 8nlog(n)階 o(nlog(n)) 2n + 3nlog(n) + 7立方項 o(n^3) 4n^3 + 5n^2 + 3n + 4指數項 o(2^n) 2^n
消耗時間大小: o(1) < o(log(n)) < o(n) < o(nlog(n)) < o(n^2) < o(n^3) < o(2^n) < o(n!) < o(n^n)
三、python中列表型別不同操作的時間效率比較
1.列表構造
(1)加操作
li1 = [1, 2]li2 = [44, 55]
li = li1 + li2
(2)列表生成器
li = [i for i in range(10000)]
(3)把可迭代物件直接轉成列表
li = list(range(10000))
(4)往空列表裡追加
li =for i in range(10000):
(5)extend
li =for i in range(10000):
li.extend(i)
測試結果:
四、列表和字典常見操作的時間複雜度
1.列表:索引取值 index o(1)
從尾部往外彈 pop() o(1)
從指定位置往外彈 pop(i) o(n)
從指定位置插入 insert() o(n)
刪除
delo(n)
2.字典複雜度
複製 copy o(n)
取 get o(1)
設值 set o(1)
刪除 delete o(1)
包含 contain o(1)
迭代 iteration o(n)
五、資料結構引入
演算法關注解決問題的步驟和思想
資料結構關注一堆資料如何組成。
python中字典、元組、列表、集合都是已經封裝好的高階資料結構。資料結構就是對基本資料型別的封裝。
程式 = 資料結構 + 演算法
抽象資料型別: 把原有的基本資料型別跟這資料所支援的操作放到一起形成整體。
演算法(一)時間複雜度
演算法很重要,但是一般情況下做移動開發並不經常用到,所以很多同學早就將演算法打了個大禮包送還給了老師了,況且很多同學並沒有學習過演算法。這個系列就讓對演算法頭疼的同學能快速的掌握基本的演算法。過年放假階段玩了會遊戲nba2k17的生涯模式,沒有比賽的日子也都是訓練,而且這些訓練都是自發的,沒有人逼你...
演算法(一)時間複雜度
1.演算法的效率 雖然計算機能快速的完成運算處理,但實際上,它也需要根據輸入資料的大小和演算法效率來消耗一定的處理器資源。要想編寫出能高效執行的程式,我們就需要考慮到演算法的效率。演算法的效率主要由以下兩個複雜度來評估 時間複雜度 評估執行程式所需的時間。可以估算出程式對處理器的使用程度。空間複雜度...
一 時間複雜度 二 空間複雜度
目錄 一 時間複雜度 二 空間複雜度 我們想要知道乙個演算法的 時間複雜度 很多人首先想到的的方法就是把這個演算法程式執行一遍,那麼它所消耗的時間就自然而然知道了。這種方式可以嗎?當然可以,不過它也有很多弊端。這種方式非常容易受執行環境的影響,在效能高的機器上跑出來的結果與在效能低的機器上跑的結果相...