一。什麼是算法

算法是計算機處理信息的本質,因爲計算機程序本質上是一個算法來告訴計算機確切的步驟來執行一個指定的任務。一般地,當算法在處理信息時,會從輸入設備或數據的存儲地址讀取數據,把結果寫入輸出設備或某個存儲地址供以後再調用。

通俗的來講,算法就是你解決問題的思路。

二。算法的五大特性

輸入: 算法具有0個或多個輸入

輸出: 算法至少有1個或多個輸出

有窮性: 算法在有限的步驟之後會自動結束而不會無限循環,並且每一個步驟可以在可接受的時間內完成

確定性:算法中的每一步都有確定的含義,不會出現二義性

可行性:算法的每一步都是可行的,也就是說每一步都能夠執行有限的次數完成

三。時間複雜度

我們可以通過算法的執行來判斷算法的優劣。但這個執行時間本身又收到程序執行環境(硬件)的影響。有沒有什麼可以客觀的衡量算法的優劣呢? ----------時間複雜度

我們假定計算機執行算法每一個基本操作的時間是固定的一個時間單位,那麼有多少個基本操作就代表會花費多少時間單位。

每臺機器執行的總時間不同,但同一算法執行的步驟數量在每臺機器上是相同的。

時間複雜度可以用步驟的數量來表示,從而來表示算法的優劣

在計算時間複雜度時注意: N 問題的規模 走勢的影響 數量級

- 算法的速度並非指時間,不是以秒爲單位;而是操作數的增速。從增量的角度度量的。

- 平時說的算法的速度,指的是隨着輸入的增加,其運行時間將會以什麼樣的速度進行增加。

---------------------------------------------------------------------------------------------------

“大O記法”:對於單調的整數函數f,如果存在一個整數函數g和實常數c>0,使得對於充分大的n總有f(n)<=c*g(n),就說函數g是f的一個漸近函數(忽略常數),記爲f(n)=O(g(n))。也就是說,在趨向無窮的極限意義下,函數f的增長速度受到函數g的約束,亦即函數f與函數g的特徵相似。

時間複雜度:假設存在函數g,使得算法A處理規模爲n的問題示例所用時間爲T(n)=O(g(n)),則稱O(g(n))爲算法A的漸近時間複雜度,簡稱時間複雜度,記爲T(n)

查看原文 >>
相關文章