算法的基本概念

算法定義:算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,並且每條指令表示一個或多個操作。

算法的特性
輸入輸出:算法具有零個或多個輸出 並且至少有一個或多個輸出
有窮性:指算法在執行有限步驟之後,不會出現死循環,並且每個步驟在可接受的時間內完成。
確定性:算法的每一個步驟具有確定的含義,不會出現二義性。
可行性:算法的每一步都必須是可行的,意思是每一步通過執行有限次數完成。
算法設計的要求:
正確性:滿足算法的特性。
可讀性:算法設計的另一目的是爲了方便閱讀,理解和交流。
健壯性:當輸入不合法數據時,算法也能作出相應的處理,而不會報錯或者莫名其妙的結果。
時間效率高:執行時間短。
儲存量低:算法程序運行時所佔用的內存或外部硬盤儲存空間少。
算法效率的度量方法
事後統計方法:通過設計好的測試程序和數據,利用計算機對不同算法的時間效率進行對比
(缺點:必須事先編制好測試程序,算法不好,容易浪費人力物力;時間容易受到硬件的影響;算法的測試數據難以設計。)
事前分析估算法:在計算機程序編制前,依據統計方法對算法進行估算。
(消耗時間的因素:算法採用的策略、方法;編譯產生的代碼質量;問題的輸入規模;機器的執行速度)


函數的漸進增長(階數越高,時間複雜度越高):1<log n < n < nlog n < n^2 < n^3 < 2^n < n! < 
n^n


最壞情況與平均情況:最壞情況運行時間是一種保證,那就是運行時間不會更壞了。(我們提到的運行時間都爲此)
平均運行時間是所有情況中最有意義的,應爲它是期望的運行時間。(但這個時間很難得到,只能通過大量的測試估算)


算法的空間複雜度:S(n) = O(f(n)),n爲問題規模,f(n)爲語句關於n所佔儲存空間函數。

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