演算法的空間複雜度
演算法的空間複雜度
我們在寫程式碼時,完全可以用空間來換取時間,比如說,要判斷某某年是不是閏年,你可能會花一點心思寫了一個演算法,而且由於是一個演算法,也就意味著,每次給一個年份,都是要通過計算得到是否是閏年的結果。還有另一個辦法就是,事先建立一個有2050個元素的陣列(年數略比現實多一點),然後把所有的年份按下標的數字對應,如果是閏年,此陣列項的值就是1,如果不是值為0。這樣,所謂的判斷某一年是否是閏年,就變成了查詢這個陣列的某一項的值是多少的問題。此時,我們的運算是最小化了,但是硬碟上或者記憶體中需要儲存這2050個0和1。
這是通過一筆空間上的開銷來換取計算時間的小技巧。到底哪一個好,其實要看你用在什麼地方。
演算法的空間複雜度通過計算演算法所需的儲存空間實現,演算法空間複雜度的計算公式記作:S(n)=O(f(n)),其中,n為問題的規模,f(n)為語句關於n所佔儲存空間的函式。
一般情況下,一個程式在機器上執行時,除了需要儲存程式本身的指令、常數、變數和輸入資料外,還需要儲存對資料操作的儲存單元。若輸入資料所佔空間只取決於問題本身,和演算法無關,這樣只需要分析該演算法在實現時所需的輔助單元即可。若演算法執行時所需的輔助空間相對於輸入資料量而言是個常數,則稱此演算法為原地工作,空間複雜度為O(1)。
通常,我們都使用“時間複雜度”來指執行時間的需求,使用“空間複雜度”指空間需求。當不用限定詞地使用“複雜度”時,通常都是指時間複雜度。
相關文章
- 122 演算法的時間複雜度和空間複雜度詳解演算法時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- PHP 演算法基礎----時間複雜度和空間複雜度(轉載)PHP演算法時間複雜度
- 說說你對演算法中時間複雜度,空間複雜度的理解?如何計算?演算法時間複雜度
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 我們常說的演算法時間複雜度和空間複雜度到底是什麼?演算法時間複雜度
- 時間與空間複雜度分析複雜度
- 那些年忽略的知識:時間複雜度和空間複雜度詳解時間複雜度
- 如何不用演算法對陣列進行(0時間複雜度,0空間複雜度)排序?演算法陣列時間複雜度排序
- 什麼才是真正的空間複雜度?複雜度
- 演算法的時間複雜度演算法時間複雜度
- 1. 時間複雜度和空間複雜度 (7 天掌握演算法面試必考知識點)時間複雜度演算法面試
- 易被忽略的知識點之 ---- 各種時間複雜度和空間複雜度時間複雜度
- 到底什麼才是真正的空間複雜度?複雜度
- 冰與火之歌:「時間」與「空間」複雜度複雜度
- 演算法(一)時間複雜度演算法時間複雜度
- 演算法分析__時間複雜度演算法時間複雜度
- 卷演算法——時間複雜度演算法時間複雜度
- 衡量演算法的效能-時空複雜度分析演算法複雜度
- 最詳細的解說—時間和空間複雜度複雜度
- 遞迴演算法的時間複雜度遞迴演算法時間複雜度
- 資料結構與演算法(一):帶你瞭解時間複雜度和空間複雜度到底是什麼?資料結構演算法時間複雜度
- 解惑3:時間頻度,演算法時間複雜度演算法時間複雜度
- JavaScript 資料結構與演算法之美 - 時間和空間複雜度JavaScript資料結構演算法複雜度
- 【基礎】演算法的時間複雜度分析演算法時間複雜度
- 日常分享:關於時間複雜度和空間複雜度的一些優化心得分享(C#)時間複雜度優化C#
- 自學 資料結構四月二十一日_時間複雜度&空間複雜度資料結構時間複雜度
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- 演算法與資料結構--空間複雜度O(1)遍歷樹演算法資料結構複雜度
- 時間複雜度為 O(nlogn) 的排序演算法時間複雜度排序演算法
- 時間複雜度為O(nlogn)的排序演算法時間複雜度排序演算法
- 異或巧用,一道令我汗顏的演算法題——減小時間空間複雜度演算法複雜度
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 演算法複雜度演算法複雜度
- 演算法--複雜度演算法複雜度