什么是算法?
- 數(shù)據(jù)結(jié)構(gòu)與算法的關(guān)系密切唁情,單獨(dú)說其中一個,猶如唱一個獨(dú)角戲甫匹,放在一起說才有意思~
- 算法的定義:
算法是解決特定問題求解步驟的描述甸鸟,在計算機(jī)中表現(xiàn)為指令的有序序列惦费,并且每條指令表示一個或多個操作。
算法的特性:
算法中至少有0個輸入抢韭,至少有一個輸出薪贫。
有窮性:算法不可以陷入死循環(huán);算法的執(zhí)行時間在可接受的范圍之內(nèi)刻恭。
-
確定性:
算法的每一個步驟都具有確定的含義瞧省,不會出現(xiàn)二義性,算法在一定條件下鳍贾,只有一條執(zhí)行路徑臀突,相同的輸入只能有唯一的輸出結(jié)果,每個步驟被精確定義而無歧義
可行性:算法的每一步都必須是可行的贾漏,也就是說候学,每一步都能通過執(zhí)行有限次數(shù)完成
算法設(shè)計的要求
-
正確性
算法正確性是指算法至少應(yīng)該具有輸入,輸出和加工處理無歧義性纵散,能正確反映問題的需求梳码,能夠得到問題的正確答案。
正確性有四個層次:
- 算法的程序沒有錯誤
- 算法程序?qū)τ诤戏ǖ妮斎霐?shù)據(jù)能夠產(chǎn)生滿足要求的輸出結(jié)果
- 算法程序?qū)τ诜欠ǖ妮斎氤绦蚰軌虻贸鰸M足規(guī)格說明的結(jié)果
- 算法程序?qū)τ诰倪x擇的伍掀、甚至刁難的測試數(shù)據(jù)都有滿足的輸出結(jié)果掰茶。
- 可讀性
算法設(shè)計的另一個目的是為了便于閱讀、理解蜜笤、交流濒蒋。
- 健壯性
當(dāng)輸入數(shù)據(jù)不合法時,算法也能做出相關(guān)處理把兔,而不是產(chǎn)生異郴铮或莫名其妙的結(jié)果。
- 時間效率高和存儲量低
也就是時間短县好,占用內(nèi)存小围橡。
算法效率的度量方法
- 事后統(tǒng)計法(不適用)
- 事前分析法
一個高級程序設(shè)計語言編寫的程序在計算機(jī)上運(yùn)行時所消耗的時間取決于下列因素。- 算法采用的策略缕贡,方法翁授。
- 編譯程序產(chǎn)生的代碼質(zhì)量
- 問題的輸入規(guī)模
- 機(jī)器執(zhí)行指令的速度
一般從第三點(diǎn)切入分析!