1.算法的定義:?
算法是解決特定問題求解步驟的描述,在計算機中表現(xiàn)為制定的有限序列,并且每條指令表示一個或者多個操作。
2.算法的特性
? ?1)輸入輸出:算法具有零個后者多個輸入,至少有一個或者多個輸出。
? ?2)有窮性:算法在執(zhí)行有限的步驟之后捻撑,自動結束而不會出現(xiàn)無限循環(huán),并且每一步驟在可接受的時間內完成。
? ?3)確定性:算法的每一步驟都具有確定的意思顾患,不會出現(xiàn)二義性番捂。
? ?4)可行性:算法的每一步都必須是可行的,也就是說江解,每一步都能夠通過執(zhí)行有限次數(shù)完成设预。
3.算法設計的要求:
? ?1)正確性:算法的正確性是指算法至少應該具有輸入輸出和加工處理無歧義性,能正常反應問題的需求膘流,能夠得到問題的正確答案絮缅。
? ? 算法正確性的四個層次:?
? ? ?a)算法程序沒有語法錯誤? ? ? ? ? ? ? ? ---------------->算法程序要求最低的
? ? ?b)算法程序對于合法的輸入數(shù)據能夠產生滿足要求的輸出結果
? ? ?c)算法程序對于非法的輸入數(shù)據能夠得出滿足規(guī)格說明的結果? ? ? ? --------->由于d很難達到,c作為一個算法是否正確的標準
? ? ?d)算法程序對于精心選擇的呼股,甚至刁難的測試數(shù)據都是滿足要求的輸出結果? ? ? ? ?-------------->算法程序要求最高的
? ? 2)可讀性:算法設計的另一個目的就是為了便于閱讀耕魄,理解和交流∨硭可讀性是算法好壞的很重要的標準
? ? 3)健壯性:當輸入數(shù)據不合法時吸奴,算法也能做出相應的處理,而不是產生異常和莫名奇妙的結果
? ? 4)時間效率高和存儲量低:設計算法應該盡量滿足該要求
4.算法效率的度量方法:
? ?1)事后統(tǒng)計的方法:由于事后統(tǒng)計缺陷太大缠局,所以不適合
? ?2)事前分析估算方法:在計算機程序變成前,一句統(tǒng)計方法對算法進行估算狭园。
? ? ? 一個程序在計算機中運行所消耗時間取決于以下因素:
? ? ? a)算法采用的策略读处、方法? ? ? ? ? ? ?------->算法好壞的根本
? ? ? b)編譯產生的代碼質量? ? ? ? ? ? ? ? ?-------->軟件來決定的
? ? ? c)問題的輸入規(guī)模
? ? ? d)機器執(zhí)行指令的速度? ? ? ? ? ? ? ? -------------->系統(tǒng)硬件的性能
由此可知,一個程序的運行時間依賴于算法的好壞和問題的輸入規(guī)模罚舱。
在分析程序的運行時間時绎谦,最重要的是把程序看成是獨立于程序設計語言的算法或者是一系列的步驟