1. 程式人生 > >演算法(一):演算法簡介

演算法(一):演算法簡介

演算法簡介
● 什麼是演算法
       ➢一系列的計算步驟,用來將輸入資料轉化成輸出結果
● 演算法的意義
       ➢用於解決特定的問題
       ➢解決同一個問題的不同演算法的效率常常相差非常大,這種差距的影響往往比硬體和軟體方面的差距還要大
● 比較常聽到的較為簡單的演算法
       ➢排序演算法
       ➢加密演算法

演算法的特徵
● 有窮性
       ➢執行有限個步驟之後終止
● 確切性
       ➢每一步有確切的定義
● 輸入
       ➢有0個或N個輸入(N >= 1)
● 輸出
       ➢至少一個輸出
● 可行性
       ➢任何計算步驟都是可以被分解為基本的可執行的操作步驟,即每個計算步驟都可以在有限時間內完成

如何評定一個演算法的優劣?
● 如果單從效率上進行評估,可能會想到這麼一種方案:
       ➢比較不同演算法對同一組輸入的執行處理時間(存在比較明顯的缺點)
         (1)執行時間嚴重依賴硬體以及執行時各種不確定的環境因素
         (2)必須編寫相應的測算程式碼
         (3)測試資料的選擇比較難保證公正性
● 一般從一下維度來評估演算法的優劣
       ➢正確性
       ➢可讀性
       ➢健壯性(對不合理輸入的反應能力和處理能力)
       ➢時間複雜度:估算程式指令的執行次數
       ➢空間複雜度:估算所需佔用的額儲存空間

大O表示法


常見覆雜度

常見排序演算法的複雜度

演算法的優化方向
● 用盡量少的記憶體空間
● 用盡量少的執行步驟
● 根據情況可以
       ➢空間換時間
       ➢時間換空間