重溫演算法 Day1 複雜度分析上

2021-10-04 23:39:23 字數 926 閱讀 6686

最近加入了個重溫演算法的群,60天將常用的資料結構和演算法過一遍,要求每週至少打卡3次。在時間允許的情況下,每天晚上看上1到2個小時,鞏固演算法還是很不錯的。在重溫的同時,我將筆記整理到到此。

決定演算法快慢的因素有很多,但是所有的因素可以分為兩類。第一類是不隨資料量變化的因素,第二類是隨著數量變化的。

資料結構和演算法的目的是減少資源占用和響應時間,提高執行效率。

因此,需要有統計資源占用和響應時間的考量指標。於是,空間複雜度和時間複雜度就誕生了。

時間複雜度

t(n)=o(f(n))

1.執行時間 t(n) 與每行**的執行次數 n 成正比;

2.n 表示資料規模的大小;

3.f(n) 表示每行**執行的次數總和;

4.o表示**的執行時間 t(n) 與 f(n) 表示式成正比

分析方法:

1. 只關注迴圈執行次數最多的一段**

2. 加法法則:總複雜度等於量級最大的那段**的複雜度。示例:

如果 t1(n)=o(f(n)),t2(n)=o(g(n));

那麼 t(n)=t1(n)+t2(n)=max(o(f(n)), o(g(n))) =o(max(f(n), g(n))). 

3. 乘法法則:巢狀**的複雜度等於巢狀內外**複雜度的乘積。示例:

t(n) = t1(n) * t2(n) = o(n*n) = o(n2)

空間複雜度分析

表示演算法的儲存空間與資料規模之間的增長關係

資料結構和演算法的複雜度都跑不出這幾個

o(logn):

o(n):最常見的一維陣列遍歷,鍊錶遍歷

o(nlogn):歸併,快排

o(n2):冒泡,插入

Day1 複雜度分析

問 複雜度分析要解決什麼問題?答 分析 統計演算法的執行效率和資源的消耗 問 通過 跑一遍,統計 監控,得到演算法執行的時間和占用的記憶體大小的侷限性 答 1.測試結果依賴測試環境 2.受資料規模的影響較大 問 什麼是大o複雜度表示法?答 表示 執行時間隨著資料規模增長的趨勢,也稱漸進時間複雜度 問...

演算法複雜度分析 1

空間複雜度 複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。如果存在常數c和n0使得當n n0時t n cf n 則記為t n o f n 例如 雖然對於較小的n值1000n要比n2大,但n2以更快地速度增長,因此n2最終將是更大的函式。在這種情況下,n 1...

複雜度分析 上

1什麼是複雜度分析?分別用時間複雜度 執行的快慢 和空間複雜度 記憶體的消耗 兩個概念來描述效能問題,二者統稱為複雜度.複雜度就是用來分析演算法執行效率與資料規模之間增長關係。2.為什麼要進行複雜度分析?1.和效能測試相比,複雜度分析有不依賴執行環境 成本低 效率高 易操作 指導性強的特點。2.掌握...