01 算法時間複雜度

算法時間複雜度

在這裏插入圖片描述

1. 算法

  1. 定義: 算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或多個操作。
  2. 特性:
    1. 輸入輸出
    2. 有窮性
    3. 確定性
    4. 可行性
  3. 算法設計的要求
    1. 正確性
    2. 可讀性
    3. 健壯性
    4. 時間效率高和存儲量低
      1. 時間效率:算法的執行時間
      2. 存儲量:算法在執行過程中需要的最大存儲空間:主要指算法程序運行時所佔有的內存或外部硬盤存儲空間。

2. 算法效率的度量方法

  1. 事後統計方法:不推薦

  2. 事前統計方法:推薦

    1. 一個程序的運行時間,依賴於算法的好壞和問題的輸入規模(問題輸入規模是指輸入量的多少)
    2. 不同的算法,在問題規模(n值)越大,它們在時間效率上的差異也就越來越大。
    3. 判斷一個算法的效率時,函數中的常數和其他次要項常常可以忽略,而更應該關注主項(最高階項)的階數

3. 算法時間複雜度

在進行算法分析時,語句總得執行次數T(n)是關於問題規模n的函數,進而分析T(n)隨n的變化情況並確定T(n)的數量級。算法的時間複雜度,也就是算法的時間量度,記作:T(n) = O(f(n))。它表示隨問題規模n的增大,算法執行時間的增長率和f(n)的增長率相同,稱做算法的漸進時間複雜度,簡稱爲時間複雜度。其中f(n)是問題規模n的某個函數。

  1. 分析算法的複雜度,關鍵就是要分析循環結構的運行情況

    1. 常數階:O(1)
    2. 線性階:O(n)
    3. 對數階:O(logn)
    4. 平方階:O(n² )
  2. 常用的時間複雜度所耗費的時間從小到大依次是:

    O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)

  3. 最壞情況和平均情況

    • 最壞情況運行時間是一種保證,那就是運行時間將不會再壞了。在應用中,這是一種最重要的需求,通常,除非特別指定,後面提到的運行時間都是最壞情況的運行時間。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章