您好,登錄后才能下訂單哦!
如何進行數據結構與算法中的時間與空間復雜度分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
下面主要是對底層的數據結構與算法部分進行詳盡的講解,今天我們來一起探討一下復雜度相關的問題,提到時間復雜度,不知各位第一反應是什么,比如:不就是用時間換取空間,或者用空間來換取時間嗎,恩恩,你說的呢不能算錯。
問題1:什么是算法的復雜度分析?
我呢,從一下幾個方面進行一下闡述:
其一,復雜度描述的是算法的執行時間(或者所占內存或者磁盤的空間)與數據的規模的增長之間的一種關系。
其二,它是要解決:how to 讓計算機更加的快速且省存儲空間的情況下解決你所設定的問題。
其三,評估其性能的指標:時間復雜度和空間復雜度。
問題2:為什么要進行算法的復雜度分析?
其一,與測試工程師在實際的生產環境中做的測試相比較而言,復雜度的分析不需要執行環境、且易操作、幾乎沒成本。so,作為開發工程師做復雜度的分析也是很容易實現的。
其二,還是我開篇說的那就話,從此你就會遠離垃圾代碼,讓你在程序員中與眾不同!
問題3:如何進行算法的復雜度分析?
其一,使用大O表示法
算法的執行時間與每行代碼的執行次數成正比,用T(n)=O(f(n)),進行表示,其中T(n)表示算法執行總的時間,f(n)表示每行代碼執行的總的次數,n代表數據的規模。
其二,算法復雜度分析準則:
1.單段代碼的時間復雜度看執行次數最多的那一條或者幾條:比如:for 或者while循環中的語句。
2.若有很多的代碼,則分析最大循環嵌套的部分:比如代碼的第1行到10行 中只有一個for循環,在14到30行之間存在for循環中嵌套for循環,則此時就要去分析的for循環嵌套for循環的這部分內容。
3.嵌套代碼求乘積:比如遞歸調用的代碼,多重循環的代碼。
4.多個規模的情況使用加法法則處理。
其三,常見的算法復雜度:
多項式階:隨著數據的規模的增長,算法的執行時間和所占空間,按照多項式的比例增長。eg:
O(1) 常數階
O(logn) 對數階
O(n) 線性階
O(nlogn) 線性對數階
O(n^2) 平方階
O(n^3)立方階
常用的基本就包含這些。
非多項式階:隨著數據的規模的增長,算法的執行時間與所占空間暴增,這種的代碼就性能極差了。
主要包括:
O(2^n) 指數階
O(n!) 階乘階
看完上述內容,你們掌握如何進行數據結構與算法中的時間與空間復雜度分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。