過後統計法:
這種方法主要是經過設計好的測試程序和數據,利用計算機計時器對不一樣算法編制的程序的運行實際進行比較,從而肯定算法效率的高低。
事前分析估算方法:
在計算機程序編寫前,依據統計方法對算法進行估算。
算法
通過總結,一個高級語言編寫的側滑蓋女婿在計算機上運行時所消耗的時間卻決於下列因素:
1.算法採用的策略和方案。
2.編譯產生的代碼質量。
3.問題的輸入規模。
4.機器執行指令的速度。
咱們研究算法的複雜度,側重的是研究算法隨着輸入規模擴大增加量的一個抽象,而不是精確的定位須要政協多少次。
函數的漸近增加:給定兩個函數f(n)和g(n),若是存在一個整數N,使得對於全部的n>N,f(n)老是比g(n)大,那麼,咱們說f(n)的增加漸近快於g(n)。
時間複雜度:函數
在進行算法分析時,語句總的實現次數T(n)是關於問題規模n的函數,進而分析T(n)隨着n的變化狀況並肯定T(n)的數量級。算法的時間度量記作T(n)=O(f(n)) 。它表示歲問題規模n的增大,素顏發執行時間的增加率和f(n)的增加率 相同,稱做算法的漸近時間複雜度,簡稱爲時間複雜度。其中f(n)是問題規模n的某個函數。
測試
通常狀況下,隨着輸入規模n的增大,T(n)增加最慢的算法爲最優算法。
如何分析一個算法的時間複雜度呢?
1.用常數1代替運行時間中的全部加法常數。
2.在修改後的運行次數函數中,只保留最高階項。
3.若是最高階項存在且不是1,則去除與這一項相乘的常數。
4.獲得的最後結果就是大O階。
空間複雜度:
待增長。spa