空間複雜度
引用這種複雜度的計算主要是來度量演算法的效率。
主要度量兩種複雜度:
時間複雜度主要考慮的是計算的次數,而不是實際時間,因為計算機效能不一樣需要用的時間也是不一樣的。
時間複雜度,用來事前預估演算法時間開銷和問題規模n的關係。這裡的n就是指平時我們資料的量或者是輸入的引數等。例如迴圈n次。
時間複雜度其實包括三種:
最好時間複雜度,就是考慮最好的情況
平均時間複雜度,考慮所有輸入資料都等概率出現的情況
最壞時間複雜度,
對於計算機來說二次方在三次方前面不足為道。並且前面的係數也是不足為道的。
順序:常對冪指階
空間複雜度表示程式執行時對記憶體的需求程度。
兩個因素會影響記憶體占用程度:
變數和記憶體增加有關
函式呼叫也會帶來記憶體增加
如果生成新的變數則會帶來記憶體怎講,如果變數數量不增加則空間複雜度是o(1).
對於一維陣列來說,他是o(n),因為陣列越長記憶體占用越多。
對於二維陣列來說是n平方。
因為是相對於輸入變數來說的。比如:
因為呼叫函式的時候會儲存區域性變數,所以會占用記憶體。
從0開始學演算法2 時間複雜度詳解
我們都知道同乙個問題有不同的演算法解決,這些演算法在執行時間 執行占用記憶體 易讀性等方面都不相同,而在這些演算法中,我們只能選擇一種解決方案,這時判斷選擇哪個演算法的依據是什麼呢?在這裡,我們引入了時間複雜度和空間複雜度這兩個概念作為選擇適合演算法的重要依據,一般對比演算法的好壞基本上從它的時間複...
0 時間複雜度
快 時間複雜度 省 空間複雜度 def get sum n result 0 for i in range 1,n 1 result i return result假設每行 對應的cpu執行時間一樣,為乙個時間單位unit time 可以看到該函式第2 5行執行1次,第3 4行執行n次 總共執行時間...
資料結構與演算法2 時間複雜度和空間複雜度
演算法效率的度量方法 事後統計的方法 事前分析估算方法。演算法的時間複雜度 在進行演算法分析時,語句總的執行次數t n 是關於問題規模n的函式,進而分析t n 隨n的變化情況並確定t n 的數量級。演算法的時間複雜度記作 t n o f n 它表示隨問題規模n的增大,演算法執行時間的增長率和f n ...