大剑无锋之如何评判一个算法的优劣【面试推荐】
①時間復雜度:同樣的輸入規模(問題規模)花費多少時間
②空間復雜度:同樣的輸入規模花費多少空間(主要是內存)
以上兩點越小越好
③穩定性(健壯性):不會因為輸入的不同而導致不穩定的情況發生
④算法思路是否簡單(可讀性):越簡單越容易實現越好
補充:
?
同一問題可用不同算法解決,而一個算法的質量優劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進算法。一個算法的評價主要從時間復雜度和空間復雜度來考慮。
?
時間復雜度
算法的時間復雜度是指執行算法所需要的計算工作量。一般來說,計算機算法是問題規模n 的函數f(n),算法的時間復雜度也因此記做。
T(n)=Ο(f(n))
因此,問題的規模n 越大,算法執行的時間的增長率與f(n) 的增長率正相關,稱作漸進時間復雜度
?
空間復雜度
算法的空間復雜度是指算法需要消耗的內存空間。其計算和表示方法與時間復雜度類似,一般都用復雜度的漸近性來表示。同時間復雜度相比,空間復雜度的分析要簡單得多。
?
正確性
算法的正確性是評價一個算法優劣的最重要的標準。
?
可讀性
算法的可讀性是指一個算法可供人們閱讀的容易程度。
?
健壯性
健壯性是指一個算法對不合理數據輸入的反應能力和處理能力,也稱為容錯性。
擴展資料
算法可大致分為基本算法、數據結構的算法、數論與代數算法、計算幾何的算法、圖論的算法、動態規劃以及數值分析、加密算法、排序算法、檢索算法、隨機化算法、并行算法,厄米變形模型,隨機森林算法。
算法可以宏泛的分為三類:
一,有限的,確定性算法 這類算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類算法得出的結果常取決于輸入值。
二,有限的,非確定算法 這類算法在有限的時間內終止。然而,對于一個(或一些)給定的數值,算法的結果并不是唯一的或確定的。
三,無限的算法 是那些由于沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的算法。通常,無限算法的產生是由于未能確定的定義終止條件。
參考資料:算法--百度百科
總結
以上是生活随笔為你收集整理的大剑无锋之如何评判一个算法的优劣【面试推荐】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大剑无锋之后台运行程序并输出日志到某文件
- 下一篇: 大剑无锋之分布式和微服务分别是什么?【面