王道考研數據結構筆記之算法分析

算法的基本概念

算法是對特定問題求解步驟的一種描述,它是指令的有限序列。具有下列五個重要特性:

  • 有窮性:一個算法必須在有限的步驟結束,每一步都有在又窮的時間內結束
  • 確定性:相同的輸入只能得到相同的輸出
  • 可行性:可以被執行的操作
  • 輸入:有零個或多個輸入
  • 輸出:有一個或多個輸出

一個好的算法應該達到一下目標:

  • 正確性:能夠正確解決問題
  • 可讀性:具有良好的可讀性,幫助別人理解
  • 健壯性:輸入非法數據,能夠正確處理
  • 效率與低存儲量需求:儘量少的時間和空間
算法效率的度量
1、時間複雜度

一個語句的頻度是指該語句在算法中被重複執行的次數。算法中所有語句的頻度之和記爲T(n)。時間複雜度主要分析T(n)的數量級。算法中基本運算(最深層循環內的語句)的頻度記爲f(n),因此時間複雜度記爲:

T(n)=O(f(n))

分析一個程序的時間複雜性時,有以下兩條規則:

a) 加法規則
T(n)=T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n)))
b)乘法規則
T(n) = T1(n) * T2(n) = O(f(n)) * O(g(n)) = O(f(n) * g(n))
常見的時間複雜度
O(1)<O(log(n))<O(n)<O(nlog(n))<O(n * n)<O(n * n * n)

2、空間複雜度

空間複雜度**S(n)**定義爲該算法所耗費的存儲空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章