演算法(一):演算法簡介
阿新 • • 發佈:2018-12-15
演算法簡介
● 什麼是演算法
➢一系列的計算步驟,用來將輸入資料轉化成輸出結果
● 演算法的意義
➢用於解決特定的問題
➢解決同一個問題的不同演算法的效率常常相差非常大,這種差距的影響往往比硬體和軟體方面的差距還要大
● 比較常聽到的較為簡單的演算法
➢排序演算法
➢加密演算法
演算法的特徵
● 有窮性
➢執行有限個步驟之後終止
● 確切性
➢每一步有確切的定義
● 輸入
➢有0個或N個輸入(N >= 1)
● 輸出
➢至少一個輸出
● 可行性
➢任何計算步驟都是可以被分解為基本的可執行的操作步驟,即每個計算步驟都可以在有限時間內完成
如何評定一個演算法的優劣?
● 如果單從效率上進行評估,可能會想到這麼一種方案:
➢比較不同演算法對同一組輸入的執行處理時間(存在比較明顯的缺點)
(1)執行時間嚴重依賴硬體以及執行時各種不確定的環境因素
(2)必須編寫相應的測算程式碼
(3)測試資料的選擇比較難保證公正性
● 一般從一下維度來評估演算法的優劣
➢正確性
➢可讀性
➢健壯性(對不合理輸入的反應能力和處理能力)
➢時間複雜度:估算程式指令的執行次數
➢空間複雜度:估算所需佔用的額儲存空間
大O表示法
常見覆雜度
常見排序演算法的複雜度
演算法的優化方向
● 用盡量少的記憶體空間
● 用盡量少的執行步驟
● 根據情況可以
➢空間換時間
➢時間換空間