看了一下極客時間的演算法訓練營體驗課,時間複雜度和空間複雜度都是之前演算法課上詳細學過的,但是確實是平時應用的時候或者自己寫**的時候沒有重視起來,只是執著於能把問題解決掉的想法完成程式設計。剛好借用這個機會可以把之前學習的**計算一下時間複雜度和空間複雜度。比較新的知識還是主定理那一塊兒。
時間複雜度:知乎j解釋
day5:
時間複雜度:o(n) 有一層迴圈
空間複雜度:o(n^2) 使用到了二維陣列
vector<
int>
printmatrix
(vectorint>> matrix)
,dy[4]
=;int x=
0,y=
0,d=1;
for(
int i=
0;i) x=a,y=b;
}return res;
day6:
時間複雜度:o(n) 主要看迴圈裡面的執**況,這裡的n指的是能被2整除的次數。
空間複雜度:o(1) 主要看陣列,本段**沒有陣列的使用。
int
numberof1
(int _n)
day7:
時間複雜度:o(logn) 使用到了遞迴演算法中的二分查詢。
空間複雜度:o(n) 用到了乙個陣列nums。
int
getmissingnumber
(vector<
int>
& nums)
if(nums[r]
==r) r++
;return r;
}
複雜度分析 時間複雜度 空間複雜度
執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...
複雜度分析 時間複雜度分析和空間複雜度分析
其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...
複雜度分析(上)時間複雜度 空間複雜度
為了肉眼 實時 快速地來分析出 的複雜度,我們需要乙個不用具體的測試資料來測試,就可以粗略地估計演算法的執行效率的方法。時間複雜度 空間複雜度 表示演算法的執行時間與資料規模之間的增長關係。每行 對應的 cpu 執行的個數 執行的時間都不一樣,但是,我們這裡只是粗略估計,所以可以假設每行 執行的時間...